Dockerfile简单应用
- vicentz
- 0
- Posted on
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 指令 作用简述 1 FROM openjdk:17-jdk-slim使用官方 Java 17 的轻量级镜像作为基础 2 WORKDIR /app设置容器内的工作目录为 /app3 COPY hello-docker-0.0.1-SNAPSHOT.jar app.jar将本地的可运行 JAR 包复制到容器内的 /app/app.jar4 EXPOSE 8080声明容器运行时监听 8080 端口(供参考,非实际映射) 5 ENTRYPOINT ["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 build | Docker 命令 | 表示你要执行的是 构建镜像 操作 |
-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
