相关疑难解决方法(0)

Docker-compose:在生产中用预构建的镜像替换基于“构建”的服务?

假设我们有以下内容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: webimage: <id>不知何故?

没有关于 …

docker docker-compose docker-swarm

4
推荐指数
1
解决办法
2981
查看次数

标签 统计

docker ×1

docker-compose ×1

docker-swarm ×1