如何将Docker映像从GitLab CI注册表部署到Amazon ECS?

时间:2020-07-29 17:56:36

标签: gitlab-ci amazon-ecs

我唯一能找到的文档是Amazon注册表(ECR),而GitLab注册表则没有。

这是我的 .gitlab-ci.yml ,其中包括构建并推送到GitLab注册表的步骤:

image: docker:19

services:
  - docker:dind

stages:
  - build
  - registry-update

.build-template: &buildTemplate
  stage: build
  script:
    - docker build --build-arg VERSION=$BUILD_VERSION --target $BUILD_TARGET -t $BUILD_IMAGE:$BUILD_TARGET -f $BUILD_DOCKERFILE $BUILD_CONTEXT
  after_script:
    - mkdir -p build/$BUILD_IMAGE
    - docker save $BUILD_IMAGE:$BUILD_TARGET -o build/$BUILD_IMAGE/$BUILD_TARGET.tar
  artifacts:
    name: $CI_JOB_NAME-${CI_COMMIT_SHORT_SHA}
    expire_in: 1 day
    paths:
      - build/$BUILD_IMAGE
  dependencies: []

build-php-fpm-test:
  <<: *buildTemplate
  variables:
    BUILD_IMAGE: myproject-php-fpm
    BUILD_TARGET: dev
    BUILD_DOCKERFILE: docker/php/Dockerfile
    BUILD_CONTEXT: .
  before_script:
    - source .env && export BUILD_VERSION=$PHP_TAG

.registry-update-template: &registryUpdateTemplate
  stage: registry-update
  before_script:
    - docker load -i build/$BUILD_IMAGE/$BUILD_TARGET.tar
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker tag $BUILD_IMAGE:$BUILD_TARGET $IMAGE_TAG
    - docker push $IMAGE_TAG

registry-update-php-fpm-test:
  <<: *registryUpdateTemplate
  variables:
    BUILD_IMAGE: myproject-php-fpm
    BUILD_TARGET: dev
    IMAGE_TAG: $CI_REGISTRY_IMAGE/$BUILD_IMAGE:$CI_COMMIT_REF_SLUG
  dependencies:
    - build-php-fpm-test

但是现在我需要部署到Amazon ECS。我检查了the documentation,但未提及如何为任务定义定义图像名称。我还发现了this issue,但没有提及如何使用相关功能。

定义从GitLab注册中心到Amazon ECS的部署步骤的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

结帐 ecs-deploy 工具:https://github.com/fabfuel/ecs-deploy 您可以使用任何注册表(码头,dockerhub等)部署任务,例如:

ecs deploy <ecs_cluster> <ecs_service> --image <container_name> <container_repo>:<container_tag>

如果要部署特定任务,还可以将参数--task <task_family>:<task_revision>添加到ecs deploy。 当然,应该在您的.gitlab-ci.yml

中迈出另一步