首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gitlab中建立对接者和npm

如何在gitlab中建立对接者和npm
EN

Stack Overflow用户
提问于 2017-05-26 19:41:01
回答 2查看 5.6K关注 0票数 4

我正在使用带有docker:dind的gitlab作为服务。

问题

我正在尝试在Gitlab运行npm run build,然后是docker build

我可以用这种方式在码头上建造码头:

这是我的跑步者config.toml

代码语言:javascript
复制
$ 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的一个例子

代码语言:javascript
复制
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
  1. 当我在构建mcasimir/dind节点构建运行程序:最新时使用带有docker和npm的映像时,我有: 无法连接到Docker守护进程。这个主机上运行的是码头守护进程吗?
  2. 当我使用图像docker:latest时,码头内工作良好,但我仍然需要npm.

问题:

因为docker:latest的Dockerfile不是公共的,而且我无法从这个映像中使用apt-get,所以我想知道:

  • 是否有一种方法可以在gitlab中运行码头npm
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-26 20:10:06

因为这是一个基于高山的图像,你没有apt-get,你有apk。因此,对于默认的docker:latest,只需添加这个apk --update add nodejs

代码语言:javascript
复制
before_script:
    - apk --update add nodejs npm

你已经准备好了dind,nodejs和npm。

票数 11
EN

Stack Overflow用户

发布于 2017-05-26 21:15:30

如果我们查看码头容器的源代码,我们可以看到一个正在设置的变量:$DOCKER_HOST,这就是您需要添加export DOCKER_HOST='tcp://docker:2375'作为构建步骤的步骤,或者将DOCKER_HOST设置为全局变量。然后你可以使用任何你想要的图像,而不仅仅是docker:latest

代码语言:javascript
复制
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
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44209052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档