如何在gitlab-ci-runner-docker中使用docker和npm
我用docker docker:dind
作为服务使用gitlab-ci。
问题
我正在尝试在Gitlab-CI运行npm run build
然后由docker build
。
我可以通过这种方式在Docker中使用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: - docker
-
当我使用docker和npm的图像为我的生成mcasimir / dind-node-build-runner:最新我有:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
-
当我使用图像
docker:latest
,docker在docker工作正常,但我仍然需要npm。
题:
因为Docker的Dockerfile docker:latest
是不公开的,因为我不能从这个图像中使用apt-get
,所以我想知道:
- 如果有一种方法可以在gitlab-ci中运行docker和npm的映像?
因为这是一个阿尔卑斯山的形象,你没有apt-get,你有apk
。 所以默认的docker:latest
只是添加这个apk --update add nodejs
:
before_script: - apk --update add nodejs
你已经准备好了dind和nodejs。
如果我们查看$DOCKER_HOST
容器的源代码 ,我们可以看到一个variables被设置: $DOCKER_HOST
,这就是所有你需要的只是添加export DOCKER_HOST='tcp://docker:2375'
作为你构build或设置的一个步骤DOCKER_HOST
作为全局variables。 然后,你可以使用任何你想要的图像,而不只是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 ps