Создание образа Docker в контейнере Gitlab Runner - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь настроить сервер сборки под управлением Ubuntu Linux 18.04 в качестве узла докера.

на хосте запущены три док-контейнера - Docker Registry - Gitlab Server - Gitlab Runner (для создания Angular Apps)

Я хочу, чтобы контейнер Gitlab Runner создавал образ докера с помощью nginx и скомпилированного кода Angular и передавал его в реестр Docker.

Мне удалось настроить все три работающих контейнера, и Gitlab Runner создает угловой проект, но передо мной стоит задача - создать образ докера в контейнере Gitlab Runner.

Команда Docker недоступна в контейнере Gitlab Runner для создания образа Docker.

Возможно ли это?

enter image description here

Я попытался установить docker.io в контейнере Gitlab Runner, поэтому после сборки у него может быть доступна команда docker, но все же не удача. Он по-прежнему говорит, что докер недоступен.

Вот мой файл .gitlab-ci.yml

stages:
 - build

build:
  stage: build
  image: node:10.9.0
  script:
    - npm install -g @angular/cli
    - npm install -g typescript
    - npm install
    - ng build --prod
    - docker image build -t tag/to/image .
    - docker push tag/to/image
  tags:
    - angular
  cache:
    paths:
      - node_modules/
  artifacts:
    expire_in: 1 week
    paths:
      - dist/*
  only:
    - master

вот мой файл nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    server {
        listen 80;
        server_name  localhost;

        root   /usr/share/nginx/html;
        index  index.html index.htm;
        include /etc/nginx/mime.types;

        gzip on;
        gzip_min_length 1000;
        gzip_proxied expired no-cache no-store private auth;
        gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        location / {
            try_files $uri $uri/ /index.html;
        }
    }
}

вот файл Docker, который я хочу использовать для сборки

FROM nginx:alpine

COPY nginx.conf /etc/nginx/nginx.conf

WORKDIR /usr/share/nginx/html
COPY dist/ .

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

В документации gitlab есть ссылка на то, как создавать файлы Docker в конвейерах Gitlab-CI.Самый чистый и приятный способ описан здесь , который отлично работает.

В нашем случае нам потребовалась дополнительная компиляция в нашем конвейере, поэтому мы использовали python: образ докера 3.6.5 и только что установилидокер в нем.

Внимание: убедитесь, что у вашего исполнителя docker для gitlab-runner установлено «привилегированное» значение true

executor = "docker"
[runners.docker]
  privileged = true

Сначала мы определили «install_docker» в верхней части gitlab-ci.yml

.install_docker: &install_docker |
      apt-get update
      apt-get -y install apt-transport-https ca-certificates curl software-properties-common
      curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
      add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
      apt-get update
      apt-get -y install docker-ce

Затем мы используем его при необходимости внутри работы

script:
  - *install_docker
0 голосов
/ 10 сентября 2018

В своих проектах я обычно делаю шаги по сборке внутри Dockerfile и использую docker : image в моем .gitlab-ci.yml, чтобы установленный Docker был единственной зависимостью, которая мне нужна от бегуна.

...