spring boot 2.x项目在Linux环境下以docker形式部署

309 阅读1分钟

开门见山

1. 准备

拥有或安装以下内容:

  • Linux环境(推荐centos)
  • docker (lastest)
  • maven
  • git
  • java8+

2. 部署

  • 在线部署
  1. 新建一个项目文件夹
  2. git clone 拉取git仓库代码
  3. 编写dockerfile
# 建议生产使用,ref: http://blog.tenxcloud.com/?p=1894
FROM fabric8/java-jboss-openjdk8-jdk

# 拷贝jar包到容器中
COPY ews-payment.jar /home/

# 微信
# 拷贝p12文件到容器中(没有p12文件时请向管理员申请)
COPY credentials/wechat/ /home/

# 银联
COPY credentials/unionpay/prod/ /home/

# 银联测试
COPY credentials/unionpay/test/ /home/
  1. 执行startup.sh脚本
#!/bin/bash

# 常量定义
image_name="ews-payment"

# 如果用的 fabric8/java-jboss-openjdk8-jdk 这个镜像,必须要以下两句;默认镜像启动的容器所属用户是jboss
mkdir -p $PWD/logs
chmod 777 $PWD/logs

# mvn 打包项目
mvn clean -Dmaven.test.skip package

# 修改jar包名称
mv ./server/target/payment-server-*-SNAPSHOT.jar ./ewspay-payment.jar

# 创建镜像
docker build -t $image_name .

# 删除旧容器
docker rm -f ewspay-payment

# 运行镜像
docker run -d --restart=on-failure:5 --net=host  \
    -w /home \
    -v $PWD/logs:/home/logs \
    --name ewspay-payment $image_name \
    java \
    -Dserver.port=8040 \
    -Duser.timezone=Asia/Shanghai \
    -jar /home/ewspay-payment.jar

  • 离线部署

与在线部署类似,只是将maven打包的jar包放在本地打包,然后上传到服务器上,后面也是执行docker命令。离线部署适用于git属于私网仓库,无法从公网仓库拉取的情况。