以前部署服务器都是运维小哥写好脚本我去传包、执行命令就结束了,今天自己学习了一下怎么在docker部署项目,完成了第一个纯靠自己查资料成功部署的SpringBoot项目,欢迎大佬指教
关于mysql、redis等组件的安装这里就不展示了,具体就是docker安装各种组件,度娘都有,能保证你打的jar包能正常连上环境!启动不失败就可以(本人也是个linux菜鸟,但是根据度娘上各路大神的文章一步一步来也都安装成功了,小伙伴们一定要沉下心来学习)
话不多说直接进入本文重点:
- 先创建个目录放jar包文件,使用 -p 是指usr、local这些父级目录如果不存在也一并创建
mkdir -p /usr/local/todo-something
- 使用xftp客户端(这里笔者还是比较菜的,不会用命令拷贝,大佬直接用命令就行)把打包好的jar文件拷贝到目录/usr/local/todo-something下
- 目录/usr/local/todo-something下创建.sh执行脚本,并编写脚本内容
touch todo-something.sh
vim todo-something.sh
脚本内容如下
SOURCE_PATH=/usr/local/todo-something
SERVER_NAME=todo-something
TAG=1.0
SERVER_PORT=8081
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
if [ -n "$CID" ]; then
echo "存在容器$SERVER_NAME,CID-$CID"
docker stop $CID
echo "成功停止容器$SERVER_NAME,CID-$CID"
docker rm $CID
echo "成功删除容器$SERVER_NAME,CID-$CID"
fi
if [ -n "$IID" ]; then
echo "存在镜像$SERVER_NAME:$TAG,IID=$IID"
docker rmi $IID
echo "成功删除镜像$SERVER_NAME:$TAG,IID=$IID"
fi
echo "开始构建镜像$SERVER_NAME:$TAG"
cd $SOURCE_PATH
docker build -t $SERVER_NAME:$TAG .
echo "成功构建镜像$SERVER_NAME:$TAG"
docker run --restart=always --name todo-something -d -p 8081:8081 todo-something:1.0
echo "成功创建并运行容器$SERVER_NAME"
用cat命令输出刚编写的脚本内容
cat todo-something.sh
- 目录/usr/local/todo-something下创建Dockerfile,
touch Dockerfile
vim Dockerfile
脚本内容如下*(挖槽笔者比较菜,只能理解成这样了),设置服务器时间,创建todo-something.jar镜像文件,设置运行参数,暴露端口8081
FROM openjdk:8
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
ADD todo-demo-0.0.1-SNAPSHOT.jar todo-something.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","todo-something.jar"]
EXPOSE 8081
用cat命令输出刚写的脚本内容
cat Dockerfile
-
经过以上步骤操作目录/usr/local/todo-something下是这些文件
-
然后执行todo-something.sh
sh todo-something.sh
- 查看服务运行日志
docker logs -f todo-something
经过以上步骤,恭喜各位,一个springboot项目就在docker部署完成了!
postman测试一下接口是否能调通,这里要注意一下服务器有防火墙,如果开启状态要配置安全组,将8081暴露给外网