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

Dockerfile 结合了 MAVEN、JAVA 和 COMPOSE

易刚捷
2023-03-14

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

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 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,
        (..)

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

共有1个答案

秋兴思
2023-03-14

感谢Docker高山oracle java:找不到java我找到了为什么找不到java... Dockerfile中的From docker/comuse指令是关于构建在musl lib(高山)=

 类似资料:
  • Dockerfile Maven Status: mature At this point, we're not developing or accepting new features or even fixing non-critical bugs. This Maven plugin integrates Maven with Docker. The design goals are: Do

  • Docker 为我们提供了 Dockerfile 来解决自动化的问题。我们将介绍什么是 Dockerfile,它能够做到的事情以及 Dockerfile 的一些基本语法。 Dockerfile 的语法规则 Dockerfile 包含创建镜像所需要的全部指令。基于在 Dockerfile 中的指令,我们可以使用 Docker build 命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。 Do

  • 我在StackOverflow中看到了许多关于如何同时发送纯文本和html文本的邮件的答案。我的问题是,我如何在html部分中显示某种链接来看到文本部分?(某些并在单击时显示纯文本版本) 多谢了。

  • 我在dockerfile中使用映像jenkins/ssh slave作为基础。我想安装一个特定的maven版本并配置设置。但它不起作用,它没有选择从我的nexus下载工件的设置。此外,我不知道谁应该指定maven版本:( 你可以在下面看到我的dockerfile。我尝试安装Maven键入maven: 3.5.6,但它说找不到。我也复制了我的设置,但maven不会去我的nexus下载依赖项(sett

  • 它不工作:(.我有这个错误 [致命]org.springframework:java-backend-bdd:0.1.0:无法将项目org.springframework.boot:spring-boot-starter-parent:POM:2.0.3.从/到central发布(https://repo.maven.apache.org/maven2):sun.security.validato

  • 如何识别代码中的组合和聚合?特别是在为现有代码绘制类图时? 我知道组成是“HAS-a”关系,聚合是“PART OF”关系。我知道,在组合子类中,实例将随类一起销毁,而在聚合中则不会。 下面是一个 C/CLI 代码 报警 报警.cpp 据我所知,警报和通知之间的联系是组合,因为没有就没有。我说的对吗?如果我是对的,我怎样才能使这段代码在两个类之间具有聚合关系?请问那里的代码示例? 请帮忙。