假设我们有以下内容docker-compose.yml:
version: '3'
services:
db:
image: "postgres"
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=mysecretpassword
web:
build: web
depends_on: [ db ]
ports:
- "80:80"
Run Code Online (Sandbox Code Playgroud)
第一个服务,db只运行一个容器,其中包含来自 Docker Hub 的官方 postgres 映像。
第二个服务 ,web首先基于Dockerfile文件夹中的构建一个新图像,该文件夹也称为web,然后使用该图像运行一个容器。
在开发过程中,我们现在可以(反复)更改web文件夹中的任何内容,然后运行docker-compose up --build以在本地运行我们的应用程序。
假设我们现在想要部署到生产环境。我的理解是docker-compose.yml现在可用于“在 Docker 的群模式中定义堆栈”(例如,请参阅此答案)。但是,对于服务的build步骤web,Docker 的撰写文件文档指出
在使用(版本 3)Compose 文件以 swarm 模式部署堆栈时,将忽略此选项。docker stack 命令只接受预先构建的镜像。
无论如何,在生产机器上构建映像可能不是一个好主意,因为这会留下构建工件(源代码);这应该发生在构建服务器上。
我的问题是,是否有修改建议的方式docker-compose.yml途中生产,以换出build: web与image: <id>不知何故?
没有关于 …