【问题标题】:Run docker commands from gitlab-ci从 gitlab-ci 运行 docker 命令
【发布时间】:2020-06-28 16:11:19
【问题描述】:

我有这个 gitlab-ci 文件:

services:
  - docker:18.09.7-dind
variables:
  SONAR_TOKEN: "$PROJECT_SONAR_TOKEN"
  GIT_DEPTH: 0
  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"

  DOCKER_HOST: "tcp://docker:2375"
  DOCKER_DRIVER: overlay2

sonarqube-check:
  image: maven:latest
  stage: test
  before_script:
    - "docker version"
    - "mkdir $PWD/.m2"
    - "cp -f /cache/settings.xml $PWD/.m2/settings.xml"
  script:
    - mvn $MAVEN_CLI_OPTS clean verify sonar:sonar -Dsonar.qualitygate.wait=true -Dsonar.login=$SONAR_TOKEN -Dsonar.projectKey="project-key"
  after_script:
    - "rm -rf $PWD/.m2"
  allow_failure: false
  only:
    - merge_requests

由于某种原因,docker 服务中的 docker 找不到 docker 的二进制文件(docker version 命令,第 16 行):

/bin/bash: line 111: docker: command not found

我想知道是否有办法在 gitlab-ci 文件中执行此操作,因为我需要运行 docker 进行测试,是否有一个包含 maven 和 docker 二进制文件的图像,或者我是否有创建我自己的泊坞窗图像。

它必须全部在一个阶段,我不能将它分为两​​个阶段(或者至少我不知道如何在一个阶段在 maven 中编译并在另一个阶段使用 docker 映像运行测试)

谢谢!

【问题讨论】:

    标签: docker gitlab-ci gitlab-ci-runner docker-in-docker


    【解决方案1】:

    正如您正确指出的那样。您在用于 GitLab-CI 作业的映像中需要 mvndocker 二进制文件。

    最快的胜利可能是在运行时在maven:latest 部分的maven:latest 构建映像中安装docker。

    before_script:
        - apt-get update && apt-get install -y docker.io
        - docker version
    

    如果这对您的工作造成太大影响,您可能需要构建自己的自定义 Docker 映像,其中包含 Maven 和 Docker。

    如果您最终迁移到 Docker 19.03+,还可以查看 article about dind on Gitlab

    【讨论】:

      猜你喜欢
      • 2022-08-06
      • 2019-05-13
      • 2022-08-14
      • 1970-01-01
      • 2018-12-14
      • 2018-01-01
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      相关资源
      最近更新 更多