假设我们有以下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"
第一个服务db
只运行一个容器,其中包含来自Docker Hub的官方postgres映像。
第二个服务web
首先在一个名为web
的文件夹中基于dockerfile
构建一个新的映像,然后运行一个包含该映像的容器。
假设我们现在想要部署到生产中。我的理解是,docker-compose.yml
现在可以用来“在docker的群模式下定义堆栈”(例如,请参见下面的答案)。但是,对于Web
服务的build
步骤,Docker的compose file文档声明
在使用(版本3)组合文件以群集模式部署堆栈时,将忽略此选项。docker堆栈命令只接受预生成的图像。
无论如何,在生产机器上构建映像可能不是一个好主意,因为这会留下构建工件(源代码);这应该发生在构建服务器上。
我的问题是,是否有一种推荐的方法可以在生产过程中修改docker-compose.yml
,以某种方式用image:
替换build:web
?
在生产上没有使用成分。总的来说,我的方法有什么问题吗?
docker-compose.yml
应该只包含规范的服务定义。
任何特定于构建环境的东西(例如dev vs prod)都应该在一个单独的文件docker-compose.override.yml
中声明。每个构建环境都可以有该文件的自己版本。
build:web
声明不属于docker-compose.yml
,因为它只应该在本地(可能在构建服务器上)运行,而不是在生产中运行。
version: '3'
services:
db:
image: "postgres"
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=mysecretpassword
web:
depends_on: [ db ]
ports:
- "80:80"
这将是本地开发的默认docker-compose.override.yml
:
version: '3'
services:
web:
build: web
运行docker-compose up--build-d
现在将构建最新的代码更改并在本地启动我们的应用程序。
还可以有另一个版本docker-compose.override.build.yml
,目标是构建/CI服务器:
version: '3'
services:
web:
build: web
image: mydockeruser/web
version: '3'
services:
web:
image: mydockeruser/web
目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个
然而,我正试图使它在Windows10中工作,但没能做到。Windows 10中的等价物是什么?
我是Docker和Jenkins的新手,我正在尝试创建一个Jenkins管道来构建Docker的形象。我在尝试构建时遇到了问题,并不断收到此错误: /var/jenkins_home/workspace/Docker-Pipeline@tmp/耐用-a11b32f8/脚本。sh:第1行:docker:未找到命令 我已经在虚拟机上安装了ubuntu 我正在做和他完全一样的事情,但总是失败。
我有以下文件夹结构: 这里,我的是: 当我运行时,我希望有两个输出图像,一个用于,一个用于。 我使用(仅与版本2的语法兼容)。
前文提到的Dockerfile 可以让用户管理一个单独的容器,那幺如果我要管理多个容器呢,例如:我需要管理一个Web应用的同时还要加上其后端的数据库服务容器呢?Compose就是这样的一个工具。让我们看下官网对Compose的定义: Compose 是一个用于定义和运行多容器的Docker应用的工具。使用Compose,你可以在一个配置文件(yaml格式)中配置你应用的服务,然后使用一个命令,即可
我试图从docker容器中安装curl,但由于以下错误而失败,我尝试设置代理-No go 尝试的步骤: > 使用Dockerfile构建docker 使用构建参数HTTP_PROXY构建 Docker 构建 docker登录到repo,然后尝试构建镜像-no go 使用 env 代理更新 config.json 文件 - 不行 使用不同的代理 试图刷新windows pc上的DNS docker构