你的浏览器不支持canvas

做你害怕做的事情,然后你会发现,不过如此。

Docker部署开源项目kb-dms

时间: 作者: 黄运鑫

本文章属原创文章,未经作者许可,禁止转载,复制,下载,以及用作商业用途。原作者保留所有解释权。


环境

  • 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,成功显示登录页面

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。