Как опубликовать изображения docker в Docker hub из gitlab-ci
Gitlab предоставляет .gitlab-ci.yml
шаблон для создания и публикации изображений в собственный реестр (нажмите "новый файл" в одном из ваших проектов, выберите .gitlab-ci.yml
и docker
). Файл выглядит так, и он работает из коробки:)
# This file is a template, and might need editing before it works on your project.
# Official docker image.
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
build-master:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
only:
- master
build:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
except:
- master
но по умолчанию это будет публиковаться в реестре gitlab. Как мы можем опубликовать в docker hub?
2 ответов
нет необходимости менять это .gitlab-ci.yml
вообще, нам нужно только добавить / заменить переменные среды в настройках конвейера проекта.
во-первых, нам нужно знать url реестра. Используя hub.docker.com
не будет работать, вы получите следующую ошибку:
ответ на ошибку от демона: попытка входа в https://hub.docker.com/v2/ сбой со статусом: 404 не найден
по умолчанию docker hub url реестра можно найти как это:
docker info | grep Registry
Registry: https://index.docker.io/v1/
индекс.докер.Ио это то, что я искал. Я хотел опубликовать изображение gableroux / unity3d, вот что я использовал в секреты трубопровода:
CI_REGISTRY_USER=gableroux
CI_REGISTRY_PASSWORD=********
CI_REGISTRY=index.docker.io
CI_REGISTRY_IMAGE=index.docker.io/gableroux/unity3d
CI_REGISTRY_IMAGE
важно установить.
Значение по умолчанию registry.gitlab.com/<username>/<project>
regsitry url должен быть обновлен, поэтому используйте index.docker.io/<username>/<project>
Поскольку Docker hub является реестром по умолчанию, вы также можете использовать <username>/<project>
вместо этого, но я предпочитаю, когда это подробно. Поэтому этот ответ также должен охватывать другие реестры просто обновляют переменные среды соответствующим образом.
расширить ответ на GabLeRoux, в
у меня были проблемы на стадии нажатия сборки GitLab CI:
denied: requested access to the resource is denied
внести CI_REGISTRY
to docker.io
(удалить index.
) я смог успешно толкать.