将docker图像旋转到多个容器中

将docker图像旋转到多个容器中,docker,containers,circleci,Docker,Containers,Circleci,我正在使用docker为LAMP应用构建自动化CI/CD管道 我希望将图像旋转到5个容器中,以便5个不同的开发人员可以处理他们的代码。这个能被翻译吗?我用复制品试过,但没有成功 version: '3' services: web: build: . ports: - "8080:80"# deploy: mode: replicated replicas: 4 我得到的错误: :#/bin/bash-eo pipefail docker

我正在使用docker为LAMP应用构建自动化CI/CD管道

我希望将图像旋转到5个容器中,以便5个不同的开发人员可以处理他们的代码。这个能被翻译吗?我用复制品试过,但没有成功

version: '3'
services:
  web:
   build: .
   ports:
    - "8080:80"#    
deploy:
      mode: replicated
      replicas: 4
我得到的错误:

:#/bin/bash-eo pipefail docker合成错误:合成文件 “./docker compose.yml”无效,因为:添加了其他属性 不允许('作业'意外)您可能看到此错误 因为您使用了错误的撰写文件版本。或者指定一个 支持的版本(例如“2.2”或“3.3”),并放置您的服务 服务键下的定义,或省略版本键和位置 您在文件根目录下的服务定义将使用版本1。对于 有关撰写文件格式版本的详细信息,请参见 docs.docker.com/compose/compose-file退出,代码为1–

另外,从不同的容器中,开发人员可以推、拉和提交git吗?如果重建或运行映像,在一个容器中完成的工作是否会丢失


在构建此管道时,我实际上应该注意哪些事项。

首先,使用
docker build-t:
使用
docker file
单独构建映像。
然后使用以下compose file with
docker stack deploy
部署堆栈

version: '3'
services:
  web:
   image: <image name>:<version/tag>
   ports:
    - "8080:80"#    
   deploy:
      mode: replicated
      replicas: 4
版本:“3”
服务:
网状物:
图片::
端口:
- "8080:80"#    
部署:
模式:复制
副本:4份
deploy
属性应该位于服务内部,因为它描述了服务必须具有的副本数量。它不是像
服务
那样的全局属性。这似乎是您的compose文件中唯一的问题,
docker compose up
在管道中运行时抱怨这一问题

更新 不能使用单个
docker compose
命令运行多个副本。要从
compose.yml
运行多个副本,请在您的计算机上执行
docker swarm init
创建一个swarm

之后,只需将
docker compose up
替换为
docker stack deploy
docker compose
只是忽略
deploy
属性


有关
docker compose up
docker stack deploy
之间差异的详细信息,请参阅本文:

我不太确定我是否理解您的问题。能否请您添加更多详细信息,说明您是如何生成复制副本的,以及为什么复制副本不起作用?还有一点关于你想要实现什么的细节。看起来您希望开发人员在Docker容器中工作,并从中推送代码。是吗?是的,我想把一个图像旋转成5个不同的容器,供开发者使用。我可以使用docker run-name创建不同的容器,但我希望以自动化的方式进行。不是手动的。编辑了问题并添加了docker-compose.yml,该文件使用“副本”。我甚至不确定这个副本是否用于生成多个容器或服务。您的方向是正确的。复制模式创建映像的五个单独副本,您可以使用所有这些容器。这有什么问题吗?我正在使用CircleCI构建管道,每当我运行image时,CircleCI中就会出现错误(有问题的编辑)。另外,当我运行docker容器时,我看不到创建的复制副本。这是您的完整撰写文件吗?因为很明显,您的撰写文件是错误的。是的,它现在工作了,当我使用docker run时没有错误。但我还是看不到4个集装箱。只有一个
docker ps
返回什么?docker ps CONTAINER ID IMAGE命令创建的状态端口名称d2971c04e6ef new:new“/bin/sh-c'/usr/…”3分钟前上升3分钟80/tcp相关_lamportTry
docker ps-a
,如果结果不同,则发布结果。结果没有不同,与我使用docker ps得到的结果相同