Java docker图像创建的自动化
我是docker的新手。 规划:自动化构建过程,创建docker映像并将其存储在dockerHub上。 我想在DockerFile中配置整个构建过程 这是我的文件Java docker图像创建的自动化,java,docker,dockerfile,docker-registry,dockerhub,Java,Docker,Dockerfile,Docker Registry,Dockerhub,我是docker的新手。 规划:自动化构建过程,创建docker映像并将其存储在dockerHub上。 我想在DockerFile中配置整个构建过程 这是我的文件 # the first stage of our build will use a maven 3.6.1 parent image FROM maven:3.6.1-jdk-8-alpine AS MAVEN_BUILD # copy the pom and src code to the container WORKDIR ./
# the first stage of our build will use a maven 3.6.1 parent image
FROM maven:3.6.1-jdk-8-alpine AS MAVEN_BUILD
# copy the pom and src code to the container
WORKDIR ./
COPY ./ ./
# package our application code
RUN mvn clean package -X
FROM java:8-jdk-alpine
WORKDIR ./
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "config-consumer-0.0.1-SNAPSHOT.jar"]
从Docker hub运行自动化生成的生成报告
figuring mojo 'org.sprin
gframework
.boot:spring-boot-maven-plugin:2.2.7.RELEASE:repackage' with basic configurator -->
[DEBUG] (f) attach = true
[DEBUG] (f) excludeDevtools = true
[DEBUG] (f) excludes = []
[DEBUG] (f) executable = false
[DEBUG] (f) finalName = config-consumer-0.0.1-SNAPSHOT
[DEBUG] (f) includeSystemScope = false
[DEBUG] (f) includes = []
[DEBUG] (f) outputDirectory = /target
[DEBUG] (f) project = MavenProject: com.my.config:config-consumer:0.0.1-SNAPSHOT @ /pom.xml
[DEBUG] (f) skip = false
[DEBUG] -- end configuration --
[INFO] Replaci
ng main arti
fact with repackaged archive
[INFO] -------------------------------------------------------
-----------------
[INFO] BUILD SUCCESS
[INFO] --------------------------
----------------------------------------------
[INFO] Total time: 42.126 s
[INFO] Finished at: 2020-06-02T10:38:05Z
[INFO
] ------------------------------------------------------------------------
Removing intermediate container 1ad5140601c5
---> f68f9fc066f1
Step 5/8 : FROM java:8-jdk-alpine
---> 3fd9dd82815c
Step 6/8 : WORKDIR ./
---> Using cache
---> ef8bf11c31c1
Step 7/8 : EXPOSE 8080
---> Using cache
---> cc296c743b8b
Step 8/8 : ENTRYPOINT ["java", "-jar", "config-consumer-0.0.1-SNAPSHOT.jar"]
---> Using cache
---> 726792fb0fd9
Successfully built 726792fb0fd9
Successfully tagged nitishk58/microservicedummy:latest
Pushing index.docker.io/nitishk58/microservicedummy:latest...
Done!
Build finished
运行容器时出现错误报告
sudo docker run -p 3333:8080 nitishk58/microservicedummy
Unable to find image 'nitishk58/microservicedummy:latest' locally
latest: Pulling from nitishk58/microservicedummy
709515475419: Pull complete
38a1c0aaa6fd: Pull complete
5b58c996e33e: Pull complete
Digest: sha256:7cf1809d2ea43c16a103985db626435715e589b898808fb87c565eaa096e52cd
Status: Downloaded newer image for nitishk58/microservicedummy:latest
Error: Unable to access jarfile config-consumer-0.0.1-SNAPSHOT.jar
集装箱详情如下
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38b0a07f9677 nitishk58/microservicedummy "java -jar config-co…" 15 minutes ago Exited (1) 15 minutes ago mystifying_burnell
Dockerfile是一个包含两个阶段的文件。当您从行到达第二个时,Docker基本上重新开始;您的最终图像中没有任何内容不是在最终的FROM
行中复制的,或者在最终的FROM
行之后生成的
您需要从第一阶段复制jar文件:
COPY --from=MAVEN_BUILD /target/config-consumer-0.0.1-SNAPSHOT.jar .
我会把这个放在WORKDIR
行之后
您应该能够通过运行
docker build -t nitishk58/microservicedummy .
docker run nitishk58/microservicedummy
离线;我希望你也能得到同样的结果
我还可能将最终映像更改为基于JRE的映像(来自java:8-JRE-alpine
),以不包含完整的JDK;这将导致图像明显变小。谢谢,它工作得很好…:)肯定会尝试使用JRE