我正在使用带有docker:dind的gitlab作为服务。
问题
我正在尝试在Gitlab运行npm run build,然后是docker build。
我可以用这种方式在码头上建造码头:
这是我的跑步者config.toml
$ cat /etc/gitlab-runner/config.toml
concurrent = 4
check_interval = 0
[[runners]]
name = "developers_gitlab_school-gitlab-runner-docker"
url = "https://school.domain.com"
token = "cd09f40c6a4....a44751fec795e35"
executor = "docker"
builds_dir = "/mnt/mesos/sandbox/builds"
cache_dir = "/mnt/mesos/sandbox/cache"
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = true
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]这是.gitlab-ci.yml的一个例子
image: docker:latest
# image: mcasimir/dind-node-build-runner:latest
variables:
DOCKER_DRIVER: overlay2
services:
- docker:dind
before_script:
- docker info
- docker --version
- docker login -u ${REGISTRY_USERNAME} -p ${REGISTRY_PASSWORD} ${REGISTRY_URL}
stages:
- build
# Job: Build
build_dev:
stage: build
script:
- docker build -t group/mail-server/dev:${CI_JOB_ID} .
only:
- dev
tags:
- docker
build_master:
stage: build
script:
- docker build -t domain/mail-server:${CI_JOB_ID} .
- docker build -t domain/mail-server:latest .
only:
- master
tags:
- dockerdocker:latest时,码头内工作良好,但我仍然需要npm.问题:
因为docker:latest的Dockerfile不是公共的,而且我无法从这个映像中使用apt-get,所以我想知道:
发布于 2017-05-26 20:10:06
因为这是一个基于高山的图像,你没有apt-get,你有apk。因此,对于默认的docker:latest,只需添加这个apk --update add nodejs
before_script:
- apk --update add nodejs npm你已经准备好了dind,nodejs和npm。
发布于 2017-05-26 21:15:30
如果我们查看码头容器的源代码,我们可以看到一个正在设置的变量:$DOCKER_HOST,这就是您需要添加export DOCKER_HOST='tcp://docker:2375'作为构建步骤的步骤,或者将DOCKER_HOST设置为全局变量。然后你可以使用任何你想要的图像,而不仅仅是docker:latest。
dockeralpine:
image: alpine
services:
- docker:dind
variables:
DOCKER_HOST: "tcp://docker:2375"
tags:
- docker
script:
- apk --update add docker
- docker ps
dockerubuntu:
image: ubuntu
services:
- docker:dind
variables:
DOCKER_HOST: "tcp://docker:2375"
tags:
- docker
script:
- apt update
- apt install -yqq docker.io
- docker pshttps://stackoverflow.com/questions/44209052
复制相似问题