Docker, GitLab и развертывание изображения на AWS EC2 - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь научиться создавать .gitlab-ci.yml и действительно изо всех сил пытаюсь найти ресурсы, чтобы помочь мне. Я использую dind для создания docker образа в pu sh для docker хаба, затем пытаюсь войти в мой экземпляр AWS EC2, на котором также установлено docker, чтобы извлечь образ и запустить его выполняется.

Мне удалось создать образ с помощью GitLab и перенести его в концентратор docker, но теперь у меня возникла проблема при попытке войти в экземпляр 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-get, ssh и куча других полезных Команды установлены. Я получаю следующую ошибку:

/ bin / sh: eval: строка 114: apt-get: не найдено

Может кто-нибудь помочь мне с командами, которые я нужно войти в мой экземпляр EC2 и вытащить и запустить образ в gitlab-ci.yml, используя это docker: dind image? На какой операционной системе построен образ docker?

1 Ответ

1 голос
/ 31 марта 2020

официальный Docker образ основан на Alpine Linux, который использует apk менеджер пакетов .

Вместо этого попробуйте заменить apt-get команды следующим:

    - apk add openssh-client

Нет необходимости устанавливать sudo, просто установить openssh-server, чтобы этот шаг был удален.

...