Bash 将容器从GitLab部署到EC2的正确方法
我尝试将我的容器从gitlab registry部署到EC2实例,我到达目的地是部署我的容器,但是当我更改了一些内容,并且想要再次部署时,需要删除旧容器和旧映像并再次部署,为此,我创建了这个脚本来删除所有内容并再次部署Bash 将容器从GitLab部署到EC2的正确方法,bash,docker,amazon-ec2,gitlab,Bash,Docker,Amazon Ec2,Gitlab,我尝试将我的容器从gitlab registry部署到EC2实例,我到达目的地是部署我的容器,但是当我更改了一些内容,并且想要再次部署时,需要删除旧容器和旧映像并再次部署,为此,我创建了这个脚本来删除所有内容并再次部署 ... deploy-job: stage: deploy only: - master script: - mkdir -p ~/.ssh - echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
...
deploy-job:
stage: deploy
only:
- master
script:
- mkdir -p ~/.ssh
- echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- ssh -i ~/.ssh/id_rsa ec2-user@$DEPLOY_SERVER "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com &&
docker stop $(docker ps -a -q) &&
docker rm $(docker ps -a -q) &&
docker pull registry.gitlab.com/doesntmatter/demo:latest &&
docker image tag registry.gitlab.com/doesntmatter/demo:latest doesntmatter/demo &&
docker run -d -p 80:8080 doesntmatter/demo"
当我尝试此脚本时,出现以下错误:
"docker stop" requires at least 1 argument. <<-------------------- error
See 'docker stop --help'.
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers
Running after script
00:01
Uploading artifacts for failed job
00:01
ERROR: Job failed: exit code 1
“docker stop”至少需要一个参数 执行作业时,可能没有容器在运行
为了避免这种行为,您可以将命令更改为:
docker ps -a -q | xargs -r sudo docker stop
docker ps -a -q | xargs -r sudo docker rm
如果没有容器在运行,这些将不会产生错误
之后,确实有其他方法可以在AWS上部署容器,其中有处理容器的服务,比如,或。还可以考虑使用IaC原则部署您的基础设施(即使对于您的ec2实例也是如此)。干得好,这项工作做得很好,谢谢您的建议,我也会按照您在回答中提到的内容进行操作:)当我获得足够的声誉时,返回您的回答。如承诺的那样;D