我正在使用docker-compose,希望在不同的服务构建步骤中使用不同的Dockerfiles。 文档 建议将不同的 Dockerfiles 放在不同的目录中,但我希望它们都在同一个目录中(并且可以使用以下约定进行区分:Dockerfile.postgres、Dockerfile.main...)。这种做法可行吗?
编辑:我有一个包含以下内容的 docker-compose 文件的场景:
这个方法现在可以工作,但我想通过调用一个Python脚本来扩展
main:
build: .
volumes:
- .:/code
environment:
- DEBUG=true
postgresdb:
extends:
file: docker-compose.yml
service: main
build: utils/sql/
ports:
- "5432"
environment:
- DEBUG=true
postgresdb
的 Dockerfile 存放位置:
FROM postgres
# http://www.slideshare.net/tarkasteve/developerweek-2015-docker-tutorial
ADD make-db.sh /docker-entrypoint-initdb.d/
而主要的是:
FROM python:2.7
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /code/
这个方法现在可以工作,但我想通过调用一个Python脚本来扩展
postgresdb
的Dockerfile,该脚本根据建立在SQL Alchemy上的模型创建数据库中的表格(Python脚本将被称为python manage.py create_tables
)。我想将它添加到db的Dockerfile中,但由于容器的隔离性,我无法在那里使用SQL Alchemy,因为该镜像是基于postgres
镜像而不是Python镜像,并且它不包含sqlalchemy
包... 我该怎么办?我尝试在postgresdb
中使用main
服务,但不幸的是它没有携带Python及其包,所以我仍然无法编写一个单一的Dockerfile,既可以通过shell脚本创建Postgres数据库,也可以通过Python脚本创建表格。