我目前正在尝试设置gitlab ci管道。我已选择go with the Docker-in-Docker setup。 我得到了我的ci管道来构建docker镜像并将其推送到gitlab的注册表中,但是我似乎无法使用以下配置进行部署:
.gitlab-ci.yml
image: docker:stable
services:
- docker:dind
stages:
- build
- deploy
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
TEST_IMAGE: registry.gitlab.com/user/repo.nl:$CI_COMMIT_REF_SLUG
RELEASE_IMAGE: registry.gitlab.com/user/repo.nl:release
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker info
build:
stage: build
tags:
- build
script:
- docker build --pull -t $TEST_IMAGE .
- docker push $TEST_IMAGE
only:
- branches
deploy:
stage: deploy
tags:
- deploy
script:
- docker pull $TEST_IMAGE
- docker tag $TEST_IMAGE $RELEASE_IMAGE
- docker push $RELEASE_IMAGE
- docker run -d --name "review-$CI_COMMIT_REF_SLUG" -p "80:80" $RELEASE_IMAGE
only:
- master
when: manual
运行部署操作时,实际上在日志中收到以下反馈,但是当我检查服务器时,没有容器在运行。
$ docker run -d --name "review-$CI_COMMIT_REF_SLUG" -p "80:80" $RELEASE_IMAGE
7bd109a8855e985cc751be2eaa284e78ac63a956b08ed8b03d906300a695a375
Job succeeded
我不知道我在这里忘记了什么。我期望这种方法对部署容器是正确的吗?我想念什么/做错了什么?
tldr :想要使用gitlab ci和docker-in-docker设置将映像部署到生产环境中,作业成功,但是没有容器。目标是在部署后在主机上拥有一个运行中的容器。
答案 0 :(得分:0)
发现我还需要在gitlab-runner配置中包括docker套接字,不仅在容器中可用。
通过添加--docker-volumes '/var/run/docker.sock:/var/run/docker.sock'
并删除DOCKER_HOST=tcp://docker:2375
,我能够连接到主机系统上的docker并生成同级容器。