[英]Dockerfile combining MAVEN, JAVA and COMPOSE
I want to create a DOCKER container to be used by my gitlab-runner in order to compile/deploy my Quarkus microservices.我想创建一个 DOCKER 容器,供我的 gitlab-runner 使用,以编译/部署我的 Quarkus 微服务。 Here is what I've done:这是我所做的:
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"]
It's inspired by Dockerfiles in docker hub... It doesn't work: in gitlab pipeline it says:它的灵感来自 docker 集线器中的 Dockerfiles ......它不起作用:在 gitlab 管道中它说: So I tried some commands: docker run --rm runner4geo3d:1.0 echo $JAVA_HOME
it says nothing => it explains why runner fails... But I did set these variables, and more: when I inspect :所以我尝试了一些命令: 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,
(..)
Any idea why these variables aren't set?知道为什么没有设置这些变量吗? What did I do wrong?我做错了什么?
Thanks to Docker alpine + oracle java: cannot find java I found why java was not found... The FROM docker/compose
instruction in the Dockerfile is about an image built on musl lib (alpine) => no java is possible with it (easily). Thanks to Docker alpine + oracle java: cannot find java I found why java was not found... The FROM docker/compose
instruction in the Dockerfile is about an image built on musl lib (alpine) => no java is possible with it (容易地)。 I changed it with docker/compose:debian-1.29.2
and then it finds java:)我用docker/compose:debian-1.29.2
对其进行了更改,然后它找到了 java :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.