如何解决无法通过 GitLab 将 docker-compose 推送到 AWS ECR
我正在尝试通过 GitLab 将 docker-compose 推送到 AWS ECR,但不能。
我在 AWS 中创建了 ECR 存储库:
我有这样的 docker-compose.yml:
version: "3.3"
services:
db:
image: mongo:latest
container_name: "mongodb"
ports:
- 27017:27017
api:
build: ./in-memo-spring/
container_name: "in-memo-api"
ports:
- 8085:8085
depends_on:
- db
frontend:
build: ./in-memo-react/
container_name: "in-memo-frontend"
ports:
- 3000:3000
depends_on:
- api
我也有这样的 .gitlab-ci.yml:
variables:
DOCKER_REGISTRY: 257745035865.dkr.ecr.us-east-2.amazonaws.com
AWS_DEFAULT_REGION: us-east-2
APP_NAME: inmemo
stages:
- deploy
deploy:
stage: deploy
when: manual
image:
name: amazon/aws-cli
entrypoint: [""]
services:
- docker:dind
before_script:
- amazon-linux-extras install docker
- curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
- aws --version
- docker --version
- docker-compose version
script:
- docker-compose build -t $DOCKER_REGISTRY/$APP_NAME:CI_PIPELINE_IID .
- aws ecr get-login-password | docker login --username AWS --password-stdin $DOCKER_REGISTRY
- docker-compose push $DOCKER_REGISTRY/$APP_NAME:CI_PIPELINE_IID
allow_failure: false
我可以成功执行docker-compose build,之后我成功连接到aws ecr,但是当docker-compose push执行时,我收到这样的错误:
$ aws ecr get-login-password | docker login --username AWS --password-stdin $DOCKER_REGISTRY
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
$ docker-compose push $DOCKER_REGISTRY/$APP_NAME:CI_PIPELINE_IID
[210] Failed to execute script docker-compose
Traceback (most recent call last):
File "urllib3/connectionpool.py",line 677,in urlopen
File "urllib3/connectionpool.py",line 392,in _make_request
File "http/client.py",line 1277,in request
File "http/client.py",line 1323,in _send_request
File "http/client.py",line 1272,in endheaders
File "http/client.py",line 1032,in _send_output
File "http/client.py",line 972,in send
File "docker/transport/unixconn.py",line 43,in connect
FileNotFoundError: [Errno 2] No such file or directory
During handling of the above exception,another exception occurred:
Traceback (most recent call last):
File "requests/adapters.py",line 449,in send
File "urllib3/connectionpool.py",line 727,in urlopen
File "urllib3/util/retry.py",line 410,in increment
File "urllib3/packages/six.py",line 734,in reraise
File "urllib3/connectionpool.py",in connect
urllib3.exceptions.ProtocolError: ('Connection aborted.',FileNotFoundError(2,'No such file or directory'))
During handling of the above exception,another exception occurred:
Traceback (most recent call last):
File "docker/api/client.py",line 214,in _retrieve_server_version
File "docker/api/daemon.py",line 181,in version
File "docker/utils/decorators.py",line 46,in inner
File "docker/api/client.py",line 237,in _get
File "requests/sessions.py",line 543,in get
File "requests/sessions.py",line 530,in request
File "requests/sessions.py",line 643,in send
File "requests/adapters.py",line 498,in send
requests.exceptions.ConnectionError: ('Connection aborted.',another exception occurred:
Traceback (most recent call last):
File "docker-compose",line 3,in <module>
File "compose/cli/main.py",line 81,in main
File "compose/cli/main.py",line 200,in perform_command
File "compose/cli/command.py",line 70,in project_from_options
File "compose/cli/command.py",line 153,in get_project
File "compose/cli/docker_client.py",in get_client
File "compose/cli/docker_client.py",line 170,in docker_client
File "docker/api/client.py",line 197,in __init__
File "docker/api/client.py",line 222,in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.','No such file or directory'))
也许有人知道我做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。