无法通过 GitLab 将 docker-compose 推送到 AWS ECR

时间:2021-04-24 08:13:02

标签: docker docker-compose gitlab amazon-ecr

我正在尝试通过 GitLab 将 docker-compose 推送到 AWS ECR,但不能。

我在 AWS 中创建了 ECR 存储库:

enter image description here

我有这样的 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", 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
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.', FileNotFoundError(2, 'No such file or directory'))
During handling of the above exception, 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", line 43, 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.', FileNotFoundError(2, 'No such file or directory'))

也许有人知道我做错了什么?

0 个答案:

没有答案
相关问题