Docker,GitLab并将映像部署到AWS EC2

时间:2020-03-31 11:51:07

标签: amazon-web-services docker amazon-ec2 gitlab yaml

我正在尝试学习如何创建.gitlab-ci.yml,并且确实在努力寻找可以帮助我的资源。我正在使用dind创建一个docker镜像以推送到docker hub,然后尝试登录到我的还安装了docker的AWS EC2实例,以拉出镜像并开始运行。

我已经成功地使用GitLab构建了映像并将其推送到docker hub,但是现在我遇到了尝试登录EC2实例以提取映像的问题。

我的第一次天真尝试是这样的:

#.gitlab-ci.yml
image: docker:18.09.7

variables:
  DOCKER_REPO: myrepo
  IMAGE_BASE_NAME: my-image-name
  IMAGE: $DOCKER_REPO/$IMAGE_BASE_NAME:$CI_COMMIT_REF_SLUG
  CONTAINER_NAME: my-container-name

services:
  - docker:18.09.7-dind

before_script:
  - docker login -u "$DOCKER_REGISTRY_USER" -p "$DOCKER_REGISTRY_PASSWORD"

after_script:
  - docker logout

stages:
  - build
  - deploy

build:
  stage: build
  script:
    - docker build . -t $IMAGE -f $PWD/staging.Dockerfile
    - docker push $IMAGE

deploy:
  stage: deploy
  variables:
    RELEASE_IMAGE: $DOCKER_REPO/$IMAGE_BASE_NAME:latest
  script:
    - docker pull $IMAGE
    - docker tag $IMAGE $IMAGE
    - docker push $IMAGE
    - docker tag $IMAGE $RELEASE_IMAGE
    - docker push $RELEASE_IMAGE
# So far so good - this is where it starts to go pear-shaped
    - apt-get install sudo -y
    - sudo apt install openssh-server -y
    - ssh -i $AWS_KEY $AWS_URL "docker pull $RELEASE_IMAGE"
    - ssh -i $AWS_KEY $AWS_URL "docker rm --force $CONTAINER_NAME"
    - ssh -i $AWS_KEY $AWS_URL "docker run -p 3001:3001 -p 3002:3002 -w "/var/www/api" --name ${CONTAINER_NAME} ${IMAGE}"

看来,无论基于docker镜像的操作系统是什么,都没有安装apt-getssh和其他有用的命令。我收到以下错误:

/ bin / sh:评估:第114行:apt-get:找不到

有人可以使用我的docker:dind映像来帮助我登录EC2实例并在gitlab-ci.yml中拉并运行映像吗? Docker映像建立在哪个操作系统上?

1 个答案:

答案 0 :(得分:1)

official Docker image基于使用Alpine Linuxapk package manager

尝试将const loadOptions = { keepCurrentModels: true, preserveView: true } viewer.loadDocumentNode(doc, viewable, loadOptions) 命令替换为以下命令:

apt-get

无需安装 - apk add openssh-client ,只需安装sudo,就可以删除该步骤。