我正在使用 docker-compose,我想为不同服务的构建步骤使用不同的 Dockerfile。文档似乎建议将不同的 Dockerfile 放在不同的目录中,但我希望它们都在同一个目录中(并且可能使用以下约定进行区分:Dockerfile.postgres、Dockerfile.main ...)。这可能吗?
编辑:我的场景包含这个 docker-compose 文件:
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/
这现在有效,但我想postgresdb
通过调用 Python 脚本来扩展 Dockerfile,该脚本根据基于 SQL Alchemy 构建的模型在数据库中创建表(Python 脚本将被称为python manage.py create_tables
)。我想将它添加到数据库的 Dockerfile 中,但由于容器的隔离,我不能在那里使用 SQL Alchemy,因为该图像是基于postgres
图像而不是 Python 的,并且它不包含sqlalchemy
包......
我能做些什么?我尝试在 中使用该main
服务postgresdb
,但不幸的是它没有携带 python 及其包,所以我仍然无法编写一个 Dockerfile 来创建 Postgres 数据库(通过 shell 脚本)以及它的表(通过Python 脚本)。