环境
Linux
系统CentOS 7
准备
安装Docker
- 执行
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装docker
,其他安装方式参考 CentOS Docker 安装 - 执行
sudo systemctl start docker
启动docker
- 执行
sudo systemctl enable docker
添加docker
开机启动
项目打包
- 下载项目源码 GitHub kb-dms
- 根据
README.md
配置项目并启动成功 - 需要注意:
maven
可能会报错Could not find artifact com.microsoft.sqlserver:sqljdbc4:pom:4.1
,原因是这个包的仓库地址是http://nexus.onebusaway.org/nexus/content/repositories/public/
,解决办法有两种,配置你的maven
仓库地址或者手动去下载sqljdbc4-4.1.jar
引入项目 - 项目配置启动正常后,使用
maven
打包项目,环境使用dev
,打包成功会生成kb-dms-backend/server/target/server-0.0.1-SNAPSHOT.jar
文件
部署
- 在服务器中任意位置创建
kb-dms
目录,用于存放部署文件 - 在
kb-dms
目录中创建Dockerfile
文件,内容如下:
#基础镜像
FROM openjdk:8
#复制jar包
ADD server-0.0.1-SNAPSHOT.jar app.jar
#开放端口
EXPOSE 8080
#运行jar包
ENTRYPOINT ["java","-jar", "/app.jar"]
- 在
kb-dms
目录中创建deploy.sh
部署脚本,内容如下:
#!/bin/bash
#镜像tag
tag=dms/kb-dms:master_$(date +%Y%m%d%H%M)
#容器名称
psName=kb-dms
#构建镜像
docker build -t "$tag" .
#停止并删除之前的容器
docker stop $psName || true && docker rm -f $psName || true
#运行新的容器,并指定容器端口和名称
docker run -d -p 8080:8080 --name $psName $tag
- 将
server-0.0.1-SNAPSHOT.jar
复制到kb-dms
目录中 - 切换到
kb-dms
目录,执行sh deploy.sh
部署脚本,内容如下:
[root@localhost kb-dms]# cd /home/transnal/kb-dms
[root@localhost kb-dms]# sh deploy.sh
Sending build context to Docker daemon 41.81MB
Step 1/4 : FROM openjdk:8
---> e24ac15e052e
Step 2/4 : ADD server-0.0.1-SNAPSHOT.jar app.jar
---> fa540de0b3fd
Step 3/4 : EXPOSE 8080
---> Running in a328d41c49f1
Removing intermediate container a328d41c49f1
---> 1c1f843ff6ff
Step 4/4 : ENTRYPOINT ["java","-jar", "/app.jar"]
---> Running in 92d25f3763ca
Removing intermediate container 92d25f3763ca
---> 599af9d734f9
Successfully built 599af9d734f9
Successfully tagged dms/kb-dms:master_202301121058
Error response from daemon: No such container: kb-dms
Error: No such container: kb-dms
06f84454f8a4dc69b9920794ccd35bfb3d0ccedf884bbcf5fbbbf13c102c190e
- 执行
docker ps -a
查看容器状态,内容如下:
[root@localhost kb-dms]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06f84454f8a4 dms/kb-dms:master_202301121058 "java -jar /app.jar" 37 seconds ago Up 37 seconds 0.0.0.0:8083->8080/tcp, :::8080->8080/tcp kb-dms
- 执行
docker logs 容器ID
查看运行日志,等待启动完成 - 访问
http://服务器ip:8080
,如果访问不到,可能是开启了防火墙 - 执行
systemctl status firewalld.service
查看防火墙,显示active(running)
说明开启了防火墙 - 执行
systemctl stop firewalld.service
关闭防火墙 - 执行
systemctl disable firewalld.service
关闭防火墙开机启动 - 再次访问
http://服务器ip:8080
,成功显示登录页面