最近搞了个小项目刚刚好部署一下,记录一下部署过程 我这里是这发布Docker hub 如果你没设置为 private 别人是可以拉到的,如果需要私有则直接用Idea进行连接远程服务器docker设置docker一些配置即可,本片文章就不说这个.
前置条件 下载 docker desktop 客户端 注册 docker hub 账号 没有的话, 然后进行登录即可
放在哪里都可以 ADD target jar包地址搞对就行,我这里就默认放在 target 同级别
#FROM findepi/graalvm:java17-native
FROM openjdk:17.0.2-oraclelinux8
MAINTAINER Yang Buyi
ENV SERVER_PORT=8090 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
EXPOSE ${SERVER_PORT}
ADD /target/myproject.jar /app.jar
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \
-jar app.jar \
-XX:+HeapDumpOnOutOfMemoryError -Xlog:gc*,:time,tags,level -XX:+UseZGC ${JAVA_OPTS}
这段代码是一个简单的 Dockerfile,用于构建一个基于 OpenJDK 17 的 Docker 镜像,运行一个 Java 应用程序。这个应用程序暴露了一个环境变量 SERVER_PORT,可以通过该变量设置应用程序监听的端口。Dockerfile 的主要内容如下:
使用 openjdk:17.0.2-oraclelinux8 作为基础镜像。
设置了维护者信息为 Yang Buyi。
定义了一些环境变量,包括 SERVER_PORT、LANG、LC_ALL 和 JAVA_OPTS。
将本地的 /target/chatgpt-data-app.jar 文件复制到 Docker 镜像中的 /app.jar。
设置了容器启动时的入口命令,使用 java 命令运行 /app.jar,同时指定了一些 Java 虚拟机的参数,如 -XX:+HeapDumpOnOutOfMemoryError、-Xlog:gc*,:time,tags,level 和 -XX:+UseZGC,并且可以通过 ${JAVA_OPTS} 变量传递额外的参数。
需要注意的是,Dockerfile 中使用的 FROM 指令应该只有一个,因此需要移除 FROM findepi/graalvm:java17-native 的部分。
主要是用于打包新代码add到容器当中
# 打包 linux/amd64 镜像
docker buildx build -f ./Dockerfile --platform linux/amd64 --load -t ybyya/myproject:1.2 .
推送到 本地docker 然后利用 客户端docker 进行push 也可以 用命令 命令直接跟着 --push 或者单独 docker push ybyya/myproject:1.0
ybyya 表示 docker hub 你自己账户的用户名
myprojec 表示 一般是项目名称
:1.0 表示 你镜像的版本编号.
后面跟着一个 . 表示构建就完事了;
由于我是本地macbook pro m1 打包默认为arm架构我的linux服务器为amd架构不兼容则需要buildx进行指定打包环境
可以前往 https://hub.docker.com/repository 查看你的镜像是否push成功
tagname 表示你的镜像容器版本号
# 拉镜像
docker pull ybyya/myproject:1.0
# 执行镜像
docker run -d --name myproject -p 8090:8090 ybyya/myproject:1.0
部署的项目地址: ai.yby6.com
题外话题: 关于mysql小问题容器部署mysql时间不对将服务器时间复制到容器里面解决
docker cp /usr/share/zoneinfo/Asia/Shanghai cmysql:/etc/localtime
本期结束咱们下次再见👋~
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。