部署时如何启动新建的docker映像?
我已经创建了一个gitlab-ci.yml管道来部署一个简单的react.js应用程序。 我在EC2(AWS)上安装了gitlab runner,在我的管道中构建映像并将其推送到注册表 这是我的gitlab-ci.yml文件:部署时如何启动新建的docker映像?,docker,gitlab-ci,continuous-deployment,gitlab-ci-runner,docker-registry,Docker,Gitlab Ci,Continuous Deployment,Gitlab Ci Runner,Docker Registry,我已经创建了一个gitlab-ci.yml管道来部署一个简单的react.js应用程序。 我在EC2(AWS)上安装了gitlab runner,在我的管道中构建映像并将其推送到注册表 这是我的gitlab-ci.yml文件: image: docker:latest services: - docker:dind stages: - test - deploy test-build: stage: test only: - master tags
image: docker:latest
services:
- docker:dind
stages:
- test
- deploy
test-build:
stage: test
only:
- master
tags:
- master
script:
- sudo docker build .
deploy-production:
stage: deploy
only:
- master
tags:
- master
before_script:
# remove the offending package golang-docker-credential-helpers without removing all of docker-compose
- sudo dpkg -r --ignore-depends=golang-docker-credential-helpers golang-docker-credential-helpers
- sudo docker version
- "sudo docker info"
- "sudo docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
script:
- "sudo docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest --pull ."
- "sudo docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest"
- "sudo docker run -it -d -p 80:80 --rm --name daruma.comunicato ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest"
after_script:
- "sudo docker logout ${CI_REGISTRY}"
when: manual
问题是:如何运行最新的推送映像?
如果我运行docker run-it…
管道将失败,原因是:
docker:来自守护进程的错误响应:冲突。容器名“/app.test”已由容器“f8e888d6dff6fe5808d7577fe8fddc3e24cd8cc0e248a69d36e7ce51bf339ae6”使用。您必须删除(或重命名)该容器才能重用该名称
因为该容器已经在运行并且具有相同的名称。
我不想在部署时停止所有容器,因为我可以让其他docker容器运行。我还想做docker-stop-app.test&&docker-rm-app.test
,但是如果由于某种原因容器关闭了,这会给我一个错误,并且不会部署
处理这种情况的正确方法是什么?错误消息表示您已经有一个同名容器,docker不允许您有多个同名容器,要解决这个问题,请删除旧容器,只需在终端中执行类似于
$docker ps-a
的操作,您将获得所有容器的列表,
然后用该名称标识容器的id,并通过执行以下操作将其删除:
$docker rm -f <container-id>
$docker rm-f
错误消息意味着您已经有了一个同名容器,docker不允许您有多个同名容器,要解决这个问题,请删除旧容器,只需在终端中执行类似于$docker ps-a
的操作,您将获得所有容器的列表,
然后用该名称标识容器的id,并通过执行以下操作将其删除:
$docker rm -f <container-id>
$docker rm-f