Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GitLab CI docker生成-docker:未找到-退出代码127_Java_Docker_Maven_Dockerfile_Gitlab Ci - Fatal编程技术网

Java GitLab CI docker生成-docker:未找到-退出代码127

Java GitLab CI docker生成-docker:未找到-退出代码127,java,docker,maven,dockerfile,gitlab-ci,Java,Docker,Maven,Dockerfile,Gitlab Ci,我正在尝试为一个简单的java/maven项目创建一个CI/CD管道。 我使用的跑步者是docker跑步者。 我正在使用dockerfile创建一个安装maven/java/等的容器。。在这个容器中,程序应该被测试 很抱歉提出这个问题,但我不熟悉GitLab中的CI/CD管道 GitHub工作正常,请看: 多谢各位 以下是CI日志 。。。 执行作业脚本的“步骤脚本”阶段 $docker build--build arg JAVA_VERSION=openjdk7 /bin/sh:eval:第9

我正在尝试为一个简单的java/maven项目创建一个CI/CD管道。 我使用的跑步者是docker跑步者。
我正在使用
dockerfile
创建一个安装maven/java/等的容器。。在这个容器中,程序应该被测试

很抱歉提出这个问题,但我不熟悉GitLab中的CI/CD管道

GitHub工作正常,请看:

多谢各位


以下是CI日志

。。。
执行作业脚本的“步骤脚本”阶段
$docker build--build arg JAVA_VERSION=openjdk7
/bin/sh:eval:第95行:docker:未找到
清理基于文件的变量
错误:作业失败:退出代码127

这就是
.gitlab ci.yml


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

这是
dockerfile

# 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"]




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

如果需要在GitLab CI作业中运行
docker
命令(阅读“在容器中”),则需要在docker中运行docker(通常缩写为DinD)。这本身就是一个庞大的主题,但您可以从GitLab CI的文档开始:


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

使用图像作为默认设置:

图片:docker:19.03.13
为TLS
证书定义默认变量:

变量:
DOCKER\u TLS\u CERTDIR:“/certs”
然后使用docker映像作为服务来启用DinD:

服务:
-姓名:docker:19.03.13-dind
别名:docker

我在GitLab CI上写了关于在Docker中使用Docker的文章,您可能会发现这很有用,但我仍然建议您在阅读GitLab的文档之前先广泛阅读它们