docker-compose:对多个服务使用多个Dockerfile

休息时间

我正在使用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及其软件包,因此,我仍然无法编写用于创建Postgres数据库(通过shell脚本)及其表(通过a)的单个Dockerfile。 Python脚本)。

詹姆斯·米尔斯

由于Docker处理构建上下文的方式,这是不可能的。

您将必须Dockerfile在每个目录中使用和放置一个目录,该目录成为服务的Docker构建上下文的一部分

请参阅:Dockerfile

实际上,您将需要一个docker-compose.yml看起来像这样的:

service1:
    build: service1

service2:
    build: service2

请参阅:docker-compose

更新:

为了解决您的特定用例-虽然我了解您正在尝试做什么以及为什么我本人不会自己这样做。隔离是一件好事,有助于管理期望和复杂性。我将根据您的应用程序的源代码或在应用程序容器本身中作为另一个容器执行“数据库创建”。

另外,您可以查看更多脚本化和模板驱动的解决方案,例如shitit我没有经验,但听到过上帝的盛情)。

FWIW:关注分离ftw :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用单个URL docker-compose访问多个服务

我应该如何创建 Dockerfile 以通过 docker-compose 运行多个服务?

多个Docker容器的Dockerfile

Docker 组合多个 dockerfile

使用 docker-compose 在存储库中构建多个 dockerfile 之一

Docker compose 与 Dockerfile 创建多个图像而不是一个

运行多个docker compose

使用Docker Compose创建多个容器

使用Docker Compose运行多个GlassFish

我可以在一个命令中使用docker-compose运行多个服务吗?

如何使用docker compose运行同一服务的多个实例?

使用多个实例扩展服务时,docker-compose.yml中的命令替换

如何在docker-compose中使用略有不同的参数定义多个服务?

Docker-compose:在多个主机中部署服务

docker-compose - 具有相同服务的多个容器

如何使用docker顺序运行多个服务

使用Docker服务多个Tensorflow模型

`Dockerfile` 和 `docker-compose.yml` 之间的冲突/多个启动命令

使用Docker-Compose,如何执行多个命令

如何在docker-compose中使用多个图像标签

如何使用多个docker-compose.yml文件配置nginx?

使用Nginx反向代理运行多个docker-compose文件

docker-compose容器对多个项目使用错误的容器

如何在 docker-compose cli 中使用多个命令

用于多个服务使用的API的OAuth

使用来自不同来源的多个容器通过 Docker Compose 部署到 Azure 应用服务

如何启动使用 compose 创建并上传到另一台服务器的多个 docker 图像?

包含多个服务的 Docker 容器

Docker:项目中有多个Dockerfile