Docker的7项优秀实践



Dockerfile
FROM?eclipse-temurin:17
RUN?mkdir?/opt/app
ARG?JAR_FILE
ADD?target/${JAR_FILE}?/opt/app/app.jar
CMD?["java",?"-jar",?"/opt/app/app.jar"]
lFROM:将Java Docker镜像--eclipse-temurin:17作为基本镜像; lRUN:为jar文件创建一个目录; lARG:通过提供一个参数--JAR_FILE,避免将jar文件名被硬编码到Dockerfile中; lADD:将jar文件添加到Docker镜像中; lCMD:包含了在运行容器时必须执行的命令。

基本的Linux知识 基本的Java和Spring Boot知识 基本的Docker知识

Shell
$?MVN?spring-boot:runXML
<plugin>
<groupId>com.xenoamess.docker</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.25</version>
<configuration>
<repository>mydeveloperplanet/dockerbestpractices</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
Shell
$?mvn?clean?verifyShell
$?mvn?dockerfile:buildShell
$?docker?run?--name?dockerbestpractices?mydeveloperplanet/dockerbestpractices:0.0.1-SNAPSHOTShell
$?docker?inspect?dockerbestpractices?|?grep?IPAddress
"SecondaryIPAddresses":?null,
"IPAddress":?"172.17.0.3",
???????????????????"IPAddress":?"172.17.0.3"Shell
$?curl?http://172.17.0.3:8080/hello
Hello?Docker!

请访问DockerHub的链接; 搜索‘eclipse-temurin’; 导航到“标签”; 搜索17; 按A-Z排序; 单击标签17。
Dockerfile
FROM?eclipse-temurin:17Dockerfile
FROM?eclipse-temurin:?17.0.5_8-jre-alpine@sha256:02c04793fa49ad5cd193c961403223755f9209a67894622e05438598b32f210eShell
$?docker?images
REPOSITORY?TAG??????????????IMAGE?ID???????CREATED?????????SIZE
mydeveloperplanet/dockerbestpractices?0.0.1-SNAPSHOT???0b8d89616602???3?seconds?ago???188MB
Shell
2022-11-26?09:03:41.210?INFO?1?---?[???????????main]?m.MyDockerBestPracticesPlanetApplication?:?Starting?MyDockerBestPracticesPlanetApplication?v0.0.1-SNAPSHOT?using?Java?17.0.5?on?3b06feee6c65?with?PID?1?(/opt/app/app.jar?started?by?root?in?/)Dockerfile
RUN?addgroup——system?javauser?&&?adduser?-S?-S?/usr/sbin/nologin?-G?javauser?javauser-h,即DIR主目录 -g,即GECOS字段 -s,即登录SHELL -G,即组 -S,即创建系统级用户 -D,即不用设置密码 -H,即不要创建主目录 -u,即UID,用户id -k,即Skeleton目录(/etc/SKEL)
Dockerfile
RUN?chown?-R?javauser:javauser?/opt/appDockerfile
FROM?eclipse-temurin:17.0.5_8-jre-alpine@sha256:02c04793fa49ad5cd193c961403223755f9209a67894622e05438598b32f210e
RUN?mkdir?/opt/app
RUN?addgroup?--system?javauser?&&?adduser?-S?-s?/usr/sbin/nologin?-G?javauser?javauser
ARG?JAR_FILE
ADD?target/${JAR_FILE}?/opt/app/app.jar
RUN?chown?-R?javauser:javauser?/opt/app
USER?javauser
CMD?["java",?"-jar",?"/opt/app/app.jar"]
为了测试这个新的镜像,您首先需要通过如下命令,停止并删除正在运行的容器。
Shell
$?docker?stop?dockerbestpractices
$?docker?rm?dockerbestpracticesShell
2022-11-26?09:06:45.227?INFO?1?---?[???????????main]?m.MyDockerBestPracticesPlanetApplication?:?Starting?MyDockerBestPracticesPlanetApplication?v0.0.1-SNAPSHOT?using?Java?17.0.5?on?ab1bcd38dff7?with?PID?1?(/opt/app/app.jar?started?by?javauser?in?/)
Dockerfile
RUN?mkdir?/opt/appDockerfile
WORKDIR?/opt/appDockerfile
FROM?eclipse-temurin:17.0.5_8-jre-alpine@sha256:02c04793fa49ad5cd193c961403223755f9209a67894622e05438598b32f210e
WORKDIR?/opt/app
RUN?addgroup?--system?javauser?&&?adduser?-S?-s?/usr/sbin/nologin?-G?javauser?javauser
ARG?JAR_FILE
ADD?target/${JAR_FILE}?app.jar
RUN?chown?-R?javauser:javauser?.
USER?javauser
CMD?["java",?"-jar",?"app.jar"]Shell
2022-11-26?16:07:18.503?INFO?1?---?[???????????main]?m.MyDockerBestPracticesPlanetApplication?:?Starting?MyDockerBestPracticesPlanetApplication?v0.0.1-SNAPSHOT?using?Java?17.0.5?on?fe5cf9223143?with?PID?1?(/opt/app/app.jar?started?by?javauser?in?/opt/app)
ENTRYPOINT:当您总需要执行各种命令,才能构建出可执行的Docker镜像时,只要您愿意,完全可以将参数附加到命令中。 CMD:当您想提供一个默认的参数集,且允许在容器运行时被命令行覆盖时。
Dockerfile
CMD?["java",?"-jar",?"app.jar"]Dockerfile
ENTRYPOINT?["java",?"-jar",?"app.jar"]
Dockerfile
ADD?target/${JAR_FILE}?app.jarDockerfile
COPY?target/${JAR_FILE}?app.jar
Plain?Text
**/**
!target/*.jar

原文链接:
https://dzone.com/articles/docker-best-practices

关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675








51CTO技术栈
