📌 碎碎念(为什么写这篇)
刚把项目打包成了一个 Fat JAR,准备扔到 Linux 服务器上跑起来。 以前图省事总是随手往 /tmp 目录下一扔,但 /tmp 隔段时间就会被系统自动清理,文件丢了挺麻烦。这次规范了一点点,自己建了个 /app/java-app/ 专门放项目。
顺便把这次上传 JAR 包、写 Dockerfile、成功构建镜像的流水账过程记录下来,方便以后复制粘贴命令。
🛠️ 1. 准备工作目录
在服务器上新建一个干净的目录,不再去挤 /tmp 丢垃圾了:
# 创建自定义的应用目录
mkdir -p /app/java-app
# 进去
cd /app/java-app
📦 2. 上传 Jar 包
直接在当前路径下,敲下:
rz
在弹出的窗口里选择本地打包好的 app.jar,直接上传到这个新目录里。
📄 3. 编写 Dockerfile
在当前路径下直接 vim Dockerfile,内容非常简单,就这几行:
FROM openjdk:17
LABEL author=yezhulingmeng
COPY app.jar /app.jar
ENTRYPOINT ["java","-jar","app.jar"]
EXPOSE 8219
简单大白话解释:
FROM openjdk:17:底座用的是官方大块头 OpenJDK 17。LABEL:顺手给自己打个署名标签。COPY:把刚才传上来的app.jar塞进容器的根目录下。ENTRYPOINT:容器启动时自动帮我执行java -jar app.jar。EXPOSE:告诉别人我这个服务用的是8219端口。
🚀 4. 执行构建(一气呵成)
确保在 /app/java-app 路径下,直接运行下面这行(别漏了最后那个点 .):
docker build -f Dockerfile -t myjavaapp:v1.0 .
等它刷刷刷跑完,最后看到 FINISHED 和 naming to docker.io/library/myjavaapp:v1.0 就大功告成了!
用 ls 看一眼,这个小工作区非常干净:
root@loe-virtual-machine:/app/java-app# ls
Dockerfile app.jar
🏁 顺手把容器跑起来
镜像有了,最后直接后台挂起运行:
docker run -d -p 8219:8219 --name my-backend-service myjavaapp:v1.0
一个最基础的 Java 镜像构建和运行流程就搞定了。