【云原生技术】dockerfile里面可以配置容器中启动java应用命令吗?

204 篇文章 ¥9.90 ¥99.00
132 篇文章 ¥19.90 ¥99.00

在 Dockerfile 里你有两种官方指令来声明“容器启动时到底执行哪条 Java 命令”:

  1. ENTRYPOINT —— 定义主可执行文件 / 脚本
  2. CMD    —— 为 ENTRYPOINT 提供默认参数,或单独充当默认命令

只要把 java … 写在这两条指令中,镜像启动(docker run、Compose、K8s 等)时就会自动执行该 Java 应用,无需再手动在 docker run 后面拼命令。

──────────────────────────────
一、最常见写法
──────────────────────────────

FROM eclipse-temurin:17-jre

WORKDIR /app
COPY target/myservice.jar myservice.jar

# Java 命令 + 参数全部放在 ENTRYPOINT
ENTRYPOINT ["java", "-jar", "/app/myservice.jar"]

说明
• 采用 exec 形式(JSON 数组),可避免 /bin/sh -c 额外进程;
• 想在运行时追加参数,例如 --port=8081,可在 docker run 后面写:
docker run image:tag --port=8081