Я пытаюсь развернуть свой контейнер из реестра gitlab в EC2-инстансе, я прибыл, чтобы развернуть свой контейнер, но когда я что-то изменяю и хочу снова развернуть, требуется удалить старый контейнер и старые образы и снова развернуть , для этого я создаю этот скрипт, чтобы удалить все и развернуть снова.
...
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 ps -a -q)
после остановки docker.
Вопросы:
- Я знаю, что это не прекрасный способ сделать мои развертывания (разработчик здесь), не могли бы вы предложить другие способы, только с использованием gitlab и ec2.
- Есть ли способ избежать этой ошибки, когда у меня есть или нет контейнеры на моей машине?