Dockerfile简单应用

1. 准备web项目jar

hello-docker-0.0.1-SNAPSHOT.jar

端口号8080, jdk17

2. 编写 Dockerfile 并构建镜像

在jar的同目录下创建一个名为 Dockerfile的文件,内容如下:

FROM openjdk:17-jdk-slim
WORKDIR /app
COPY hello-docker-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

⚠️ 注意修改 hello-docker-0.0.1-SNAPSHOT.jar为你的实际 jar 包名称

步骤Dockerfile 指令作用简述
1FROM openjdk:17-jdk-slim使用官方 Java 17 的轻量级镜像作为基础
2WORKDIR /app设置容器内的工作目录为 /app
3COPY hello-docker-0.0.1-SNAPSHOT.jar app.jar将本地的可运行 JAR 包复制到容器内的 /app/app.jar
4EXPOSE 8080声明容器运行时监听 8080 端口(供参考,非实际映射)
5ENTRYPOINT ["java", "-jar", "app.jar"]容器启动时运行 java -jar app.jar启动你的 Java 应用

构建前删除无用的容器,和镜像

  • 容器: docker rm -f $(docker ps -aq)
  • 镜像: docker rmi hello-java-web

命令解析:

  • docker ps -aq→ 列出 ​​所有容器(包括运行和停止的)的 ID​​,只输出 ID(-q),不显示名称等其他信息。
  • docker rm -f ...→ 删除指定的容器,-f表示 ​​强制删除​​(即使容器正在运行也会被停止并删除)。

然后构建并运行 Docker 容器:


docker build -t hello-java-web .


命令分解与参数解释

参数/部分含义详细说明
docker buildDocker 命令表示你要执行的是 ​​构建镜像​​ 操作
-t hello-java-web​指定镜像名称和标签(tag)​-t是 --tag的简写,用于给构建出的镜像起一个名字和标签
这里 hello-java-web是镜像名称,.(默认)是标签(tag),即 latest
完整格式可以理解为:hello-java-web:latest
👉 你可以自定义名称和标签,比如:-t myapp:1.0
.​构建上下文路径​这是告诉 Docker 命令,​​从当前目录(.)中查找 Dockerfile 并以当前目录作为构建的上下文​
👉 Docker 会将当前目录(包括子目录中的文件,根据 Dockerfile 中的 COPY 等指令)发送给 Docker 引擎用于构建镜像
⚠️ 所以 ​​Dockerfile 必须位于当前目录,或者你要指定正确的路径​
docker run -d -p 8081:8080 hello-java-web

参数解释:

参数含义
-d或 --detach让容器在后台运行(detached 模式,即守护进程模式)
-p 8081:8080将容器的 8080 端口映射到宿主机的 8081 端口
hello-java-web你构建的 Docker 镜像名称

访问:http://宿主机ip:8081/hello

Previous Post Next Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注