当前位置: 首页 > 知识库问答 >
问题:

GitLab CI docker Build-Docker:找不到-退出代码127

关昊天
2023-03-14

GitHub工作得很好看一下:https://GitHub.com/ni920/cicd-test

谢谢你

以下是配置项日志

...
Executing "step_script" stage of the job script
 $ docker build --build-arg JAVA_VERSION=openjdk7
 /bin/sh: eval: line 95: docker: not found
Cleaning up file based variables
 ERROR: Job failed: exit code 127

stages:
  - java7
# - java11
# - deploy


java7:
  stage: java7
  script:
      - docker build --build-arg JAVA_VERSION=openjdk7
 # tags:
 #   - docker

#java11:
#  stage: java11
#  script:
#    - docker build --build-arg JAVA_VERSION=openjdk11
#  tags:
#    - docker
# Pull base image.
FROM alpine as build

ARG MAVEN_VERSION=3.6.1
ARG USER_HOME_DIR="/root"
ARG JAVA_VERSION=openjdk7
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries

ENV HTTP_PROXY=#comment
ENV HTTPS_PROXY=#comment

# Install Java.
RUN apk --update --no-cache add JAVA_VERSION curl

RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
 && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
 && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
 && rm -f /tmp/apache-maven.tar.gz \
 && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

ENV MAVEN_HOME /usr/share/maven
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"

# Define working directory.
WORKDIR /data

# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/default-jvm/

# Define default command.
CMD ["mvn", "--version"]



共有1个答案

谷梁楚青
2023-03-14

使用Docker执行器运行管道意味着作业将在Docker容器中运行,但并不意味着您将能够执行Docker命令。

如果需要在GitLab CI作业中运行docker命令(读作“inside a container”),则需要Docker-in-Docker(通常缩写为DinD)。这本身是一个庞大的主题,但您可以从GitLab CI的文档开始:使用Docker构建Docker映像

我总是使用DinD,在我的gitlab-ci.yml中有一个最小的设置。

使用docker图像作为默认值:

image: docker:19.03.13

为TLS证书定义默认变量

variables:
    DOCKER_TLS_CERTDIR: "/certs"

然后使用docker映像作为服务来启用DIND:

services:
    -   name: docker:19.03.13-dind
        alias: docker
 类似资料:
  • 问题内容: 我正在尝试使用docker-compose服务启动容器,但不幸的是, 容器退出了代码0 。容器的建立要归功于.tar.gz归档文件中的存储库。这个档案是一个Centos VM。 我想从同一档案创建6个容器。我想创建一个docker-compose.yml文件,而不是键入6次docker命令,我可以在其中总结其命令和标签。 我已经开始写docker-compose.yml文件只是为了创建

  • 问题内容: 我们有一个Jenkinsfile,它使用docker插件在给定容器内运行脚本。对于某些图像,此方法工作正常,但对于其他图像,则立即失败,返回-1退出代码。我们已将错误简化为一个简单的错误。这是Jenkinsfile: 这是詹金斯的输出 有趣的是,如果睡眠时间少于1秒,则该时间过去了(但120秒睡眠在许多其他图像上也可以正常工作)。 作为参考,这是一个有效的jessie图像,一个无效的j

  • 我试图用Docker compose构建一个简单的< code>next.js应用程序,但它在< code>docker-compose build上一直失败,退出代码为135。我在Mac M1 Pro上运行它(如果这是相关的)。 但我找不到任何指向退出代码135的资源。 这是 日志:

  • 我试图使用docker图像运行一些基本的html页面。 然后: 提供: 但是

  • 问题内容: 我正在使用以下软件包:os / exec http://golang.org/pkg/os/exec/在操作系统中执行命令,但我似乎找不到获取退出代码的方法。我虽然可以阅读输出 即。 问题答案: 很容易确定退出代码是0还是其他。在第一种情况下,将返回nil(除非在设置管道时出现另一个错误)。 不幸的是,在错误的情况下,没有独立于平台的方法来获取退出代码。这也是它不属于API的原因。以下