我正在使用docker为LAMP应用程序构建自动化CI / CD管道。
我希望将图像分成5个容器,以便5个不同的开发人员可以处理他们的代码。可以这样吗?我尝试使用副本,但它没有成功。
version: '3'
services:
web:
build: .
ports:
- "8080:80"#
deploy:
mode: replicated
replicas: 4
我得到的错误:
:#!/ bin / bash -eo pipefail docker-compose up错误:撰写文件 './docker-compose.yml'无效,因为:其他属性是 不允许(“作业”是意外的)您可能会看到此错误 因为您使用的是错误的Compose文件版本。指定一个 支持的版本(例如“2.2”或“3.3”)并提供您的服务 services键下的定义,或省略版本密钥和位置 您的服务定义在文件的根目录下使用版本1.对于 有关Compose文件格式版本的更多信息,请参阅 docs.docker.com/compose/compose-file退出代码1 -
另外,从不同的容器,开发人员可以推送,拉取和提交git吗?如果重建或运行图像,在一个容器中完成的工作是否会丢失?
在构建此管道时,我应该注意什么?
答案 0 :(得分:1)
首先,使用带有Dockerfile
的{{1}}单独构建您的图片,然后使用以下撰写文件docker build -t <image name>:<version/tag> .
来部署您的图片。
docker stack deploy
version: '3'
services:
web:
image: <image name>:<version/tag>
ports:
- "8080:80"#
deploy:
mode: replicated
replicas: 4
属性应该在服务中,因为它描述了服务必须具有的副本数。它不是像deploy
这样的全局属性。这似乎是你的compose文件中唯一的问题,services
在从管道运行时抱怨这个问题。
您无法使用单个docker compose up
命令运行多个副本。要从docker-compose
运行多个副本,请在您的计算机上执行compose.yml
来创建一个群。
之后,只需将docker swarm init
替换为docker-compose up
即可。 docker stack deploy <stack name>
只是忽略了docker-compose
属性。
有关deploy
和docker-compose up
之间差异的详细信息,请参阅此文:https://nickjanetakis.com/blog/docker-tip-23-docker-compose-vs-docker-stack