1. 环境准备
docker环境
docker compose
linux(mac)系统
maven
git
Java项目
我这边准备的环境是Mac系统,使用的docker compose版本如下
Java项目
我们自己的项目即可,配置好git以及ssh
我这里用一个示例(renren-generator)项目
2. docker compose相关文件
2.1 Dockerfile文件
ps . 我这个项目暴露出来的端口是7000
FROM java:8
EXPOSE 7000
VOLUME /tmp
ADD /target/renren-generator-1.0.0.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
2.2 docker-compose-renren-generator.yml文件
version: "3.7"
services:
renren-generator:
build:
context: ./
dockerfile: ./Dockerfile
expose:
- "18090"
restart: always
image: public/renren-generator
container_name: renren-generator
ports:
- 18090:7000
environment:
- "spring.profiles.active=dev"
3. shell脚本
脚本的大致的步骤:
- 拉取代码
- maven打包
- 镜像构建
- 停止容器
- 启动容器
ps . 要注意的是找好docker compress yml的文件路径
#!/bin/bash
RELEASE_VERSION=$1
if [ ! -n "$RELEASE_VERSION" ] ; then
echo "发布失败,请在命令后输入分支名或tag版本号,如:restart-backend release-1.0" && exit 1
fi
echo "当前发布版本号:"$RELEASE_VERSION
echo "starting deployment..."
# 获取当前脚本文件所在目录的绝对路径
CURR_DIR=`S=\`readlink "$0"\`; [ -z "$S" ] && S=$0; dirname $S`
echo $CURR_DIR
# 重新激活环境配置
source /etc/profile
# 切换到后端工程项目根路径
cd $CURR_DIR/../
git fetch && git checkout $1 && git pull || ! echo '[ERROR]Git拉取代码失败' || exit
echo "[check point] code update successful"
# maven打包构建
mvn clean package -Dmaven.test.skip=true || ! echo '[ERROR]Maven编译构建失败!' || exit
echo "[check point] package successful"
# 构建容器镜像
docker-compose -f renren-generator/docker-compose-renren-generator.yml build || ! echo '[ERROR]镜像构建失败' || exit
echo "[check point] image build successful"
# 停止容器
docker-compose -f renren-generator/docker-compose-renren-generator.yml down || ! echo '[ERROR]停止容器失败' || exit
echo "[check point] down successful..."
# 启动容器
docker-compose -f renren-generator/docker-compose-renren-generator.yml up -d || ! echo '[ERROR]容器启动失败' || exit
echo "[check point] starting up..."
# 清理虚悬镜像
docker image prune -a -f || ! echo '[ERROR]虚悬镜像清理失败' || exit
echo "[check point] clean suspended images successful"
echo "[check point] Congratulations! startup successful!"
4. 启动脚本
当配置都完成后,启动脚本即可
sudo sh ./restart-backend.sh master
发布完成,访问后台网址:http://localhost:18090/ (18090映射了7000端口)