spingboot项目打包到docker镜像[保姆级教程]
本文介绍了springboot开发打包docker镜像到服务端全流程,可以很完整的了解整个流程的经过,避免过多的造轮子和走弯路.
目录
写在前面: 这博客一晃鸽了好久了,其实不是没有创作,只是懒得写博客了.日常都记录在自己的语雀小本本上了.好久没有出保姆级教程了,这次忽然想通过idea直接部署到服务器,以前的过程有些忘了,没想到回过头来,又浪费几个小时踩坑,所以啊,同学们一定要记好笔记 !!!
废话不多说,开始干货教程.
1. 项目准备
1. 一个好的保姆级别的项目就应该,从创建项目开始.
- 项目服务器URL使用阿里云的国内镜像,原因有二:
- 不用翻墙,搞的快
- 官网不支持创建java8
2. 勾个快速启动的毛坯项目就差不多了.
3. 项目创建完成后,阿里云会给创建demo接口.我们就直接拿过来测试用.项目的精神面貌和下面这样:
4. 创建新项目后,必须要做的两步检查!!!!
(1) 点击设置 -> 项目结构
配置项目结构SDK和语言级别.
配置模块 下的源和依赖 的语言级别和模块SDK.
(2) 检查设置 -> 构建\执行\部署 -> 构建工具 -> Maven,确保为你本地配置.
5. 环境已备,一键起飞
找到启动类, 启动测试一下. 都是ok的.
进入浏览器访问,也是正常的.
2. 项目打包测试
1. 项目打包测试,其实是有坑的.时间长了,有些配置忘了,再次排除问题就会很浪费时间.
需要记住,将pom文件中的,这样打出的jar才可以通过java -jar 执行
skip>true</skip> 更改为 skip>false</skip>
关于这个参数我就不多赘述了,可以自定AI提问学习一下.
2. 执行maven的clean 和package
3. 进入到target目录下
4. 执行 java -jar jar名称
5. 网页测试都是ok的
3. docker配置
3.1 服务器端配置
1. 进入服务器,查看docker配置
vim /etc/docker/daemon.json
{
"data-root": "/var/lib/docker",
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-file": "3",
"max-size": "10m"
},
"max-concurrent-downloads": 10,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://docker.m.daocloud.io",
"https://ghcr.io",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn"
],
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"hosts": [
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2375"
]
}
这里需要注意的是hosts配置,远程开放端口为2375.(上述配置可直接复制.)
2. 重新启动docker服务
systemctl restart docker
踩坑记录:
这里有可能会出现冲突,如果出现问题,执行,然后将我框起来地方修改为和我一致.
sudo vim /usr/lib/systemd/system/docker.service
这里补充几个快捷命令:
1. 查看docker日志
journalctl -u docker.service --no-pager
2. 查看远程端口状态
netstat -tuln | grep 2375
3. 完成docker重启后,开放防火墙端口
sudo firewall-cmd --permanent --add-port=2375/tcp
sudo firewall-cmd --reload
很好,到此处,服务端配置已经完成.
3.2 开发IDEA配置
1. 插件准备
idea应用商店下载docker插件,如下所示:
2. 进入 设置 -> 构建\执行\部署 -> Docker 下, 新增 doker配置.如下所示:
- 勾选 右侧的TCP套接字
- 输入引擎URL,这里为ip为你服务器的ip,端口号保持不变: tcp://192.168.64.155:2375
- 如果连接成功,下方会进行提示.
3. 配置启动
(1) 点击编辑配置
(2) 左上角点击➕,然后选择Docker - > Dockerfile
- 配置执行前项目到打包清理命令
clean package -U -DskipTests
点击应用,然后确定,
3.3 创建dockerfile
1. 在项目的根目录下创建dockerfile,如下所示:
内容如下:
# 使用 OpenJDK 8 基础镜像
FROM openjdk:8
# 暴露 8080 端口
EXPOSE 8080
# 定义 JAR_FILE 参数,默认值为你打包的 JAR 文件名
ARG JAR_FILE=docker-test-demo-0.0.1-SNAPSHOT.jar
# 将构建的 JAR 文件添加到容器中,并重命名为 docker-test-demo-1.jar
ADD target/${JAR_FILE} /docker-test-demo-1.jar
# 设置启动命令
ENTRYPOINT ["java", "-jar", "/docker-test-demo-1.jar"]
2. 执行配置的docker-start
构建日志:
容器启动日志:
3. 网页访问测试
开放端口:
sudo firewall-cmd --permanent --add-port=8888/tcp
sudo firewall-cmd --reload
很好,现在已经大功告成! 接下来, 你就可以愉快的摸鱼了.文章全程从项目创建到部署配置,有图有结果, 真实可靠,同学少走弯路吧~
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)