【问题标题】:Dockerfile combining MAVEN, JAVA and COMPOSE结合了 MAVEN、JAVA 和 COMPOSE 的 Dockerfile
【发布时间】:2022-01-07 10:37:09
【问题描述】:

我想创建一个 DOCKER 容器供我的 gitlab-runner 使用,以便编译/部署我的 Quarkus 微服务。 这是我所做的:

FROM openjdk:11-jdk as JDK

FROM maven:3.8.4-jdk-11 as MAVEN

FROM docker/compose

ENV LANG='fr_FR.UTF-8' LANGUAGE='fr_FR:fr'

LABEL description="Runner for compiling/deploying my QUARKUS services " \
      version="${VERSION}"

COPY --from=JDK /usr/local/openjdk-11 /usr/local/openjdk-11
ENV JAVA_HOME=/usr/local/openjdk-11
RUN { echo '#/bin/sh'; echo 'echo "$JAVA_HOME"'; } > /usr/local/bin/docker-java-home && chmod +x /usr/local/bin/docker-java-home && [ "$JAVA_HOME" = "$(docker-java-home)" ] # backwards compatibility
ENV PATH=$JAVA_HOME/bin:$PATH

ARG USER_HOME_DIR="/root"

COPY --from=MAVEN /usr/local/bin/mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh
COPY --from=MAVEN /usr/share/maven /usr/share/maven
RUN ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
ENV MAVEN_HOME=/usr/share/maven
ENV MAVEN_CONFIG="$USER_HOME_DIR/.m2"

RUN echo 'JAVA_HOME=/usr/local/openjdk-11'>/root/env \
    && echo 'MAVEN_HOME=/usr/share/maven'>>/root/env \
    && echo 'MAVEN_CONFIG="$USER_HOME_DIR/.m2"'>> /root/env \
    && chmod +x /root/env\
    && source /root/env

ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]
CMD ["mvn"]

它的灵感来自 docker hub 中的 Dockerfiles ... 它不起作用:在 gitlab 管道中它说: 所以我尝试了一些命令: docker run --rm runner4geo3d:1.0 echo $JAVA_HOME 它什么也没说 => 它解释了跑步者失败的原因...... 但我确实设置了这些变量! 等等,当我检查时:

docker inspect runnerxxx:1.0
[
    {
(...)
            "Env": [
                "PATH=/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=fr_FR.UTF-8",
                "LANGUAGE=fr_FR:fr",
                "JAVA_HOME=/usr/local/openjdk-11",
                "MAVEN_HOME=/usr/share/maven",
                "MAVEN_CONFIG=/root/.m2"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"mvn\"]"
            ],
            "Image": "sha256:7ab7026055a9a6af295a884f9eee926bbb4cdb6a5102f0c07756e69e4bf95126",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/usr/local/bin/mvn-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "description": "Runner for compiling/deploying QUARKUS services ",
                "version": ""
            }
        },
        "DockerVersion": "20.10.12",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=fr_FR.UTF-8",
                "LANGUAGE=fr_FR:fr",
                "JAVA_HOME=/usr/local/openjdk-11",
                "MAVEN_HOME=/usr/share/maven",
                "MAVEN_CONFIG=/root/.m2"
            ],
            "Cmd": [
                "mvn"
            ],
            "Image": "sha256:7ab7026055a9a6af295a884f9eee926bbb4cdb6a5102f0c07756e69e4bf95126",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/usr/local/bin/mvn-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "description": "Runner for compiling/deploying QUARKUS services ",
                "version": ""
            }
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 434176309,
        "VirtualSize": 434176309,
        (..)

知道为什么没有设置这些变量吗?我做错了什么?

【问题讨论】:

  • 搞笑:docker run --rm --env JAVA_HOME="/usr/local/openjdk-11" runner:1.0 echo $JAVA_HOME 什么也没给 :(

标签: java docker maven docker-compose gitlab-ci-runner


【解决方案1】:

感谢Docker alpine + oracle java: cannot find java 我找到了为什么找不到java ... Dockerfile 中的FROM docker/compose 指令是关于构建在musl lib (alpine) 上的图像=> 没有java 是可能的(很容易)。 我用docker/compose:debian-1.29.2 更改了它,然后它找到了java :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多