jenkins部署springboot多模块项目至docker容器运行

docker安装jenkins,war包安装jenkins

jenkins远程ssh部署项目至tomcat

jenkins下载Git Parameter插件
jenkins部署springboot多模块项目至docker容器运行_第1张图片jenkins部署springboot多模块项目至docker容器运行_第2张图片
jenkins部署springboot多模块项目至docker容器运行_第3张图片
jenkins部署springboot多模块项目至docker容器运行_第4张图片
jenkins部署springboot多模块项目至docker容器运行_第5张图片
jenkins部署springboot多模块项目至docker容器运行_第6张图片
clean package -U -pl ${module} -am -Dmaven.test.skip=true

至此git分支、maven子模块可选的项目已经可以编译成功

Dockerfile文件

# 基于哪个镜像
FROM java:8
# 复制文件到容器
ADD eureka.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8888
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]
echo "----开始docker部署----"
# 定义变量
API_NAME=$module
API_VERSION="0.0.1"
#API_PORT="7001"

#不同微服务使用不同端口,application.yml、Dockerfile、shell、docker-compose.yml等端口应该一致
if [[ "$module" == "eureka" ]]; then
    API_PORT="7001"
elif [[ "$module" == "gateway" ]]; then
    API_PORT="8527"
fi

# 镜像名称(以日期时间为镜像标签,防止重复)
IMAGE_NAME=$API_NAME":"$(date "+%Y%m%d-%H%M%S")
CONTAINER_NAME=$API_NAME-$API_VERSION

# 进入target目录并复制Dockerfile文件
cd $WORKSPACE/$module/target
cp classes/Dockerfile .

# 删除Docker容器
cid=$(docker ps | grep $CONTAINER_NAME |awk '{print $1}')
if [ x"$cid" != x ]
    then
    docker rm -f $cid
fi

# 删除Docker镜像
imgid=$(docker images | grep $API_NAME |awk '{print $3}')
if [ x"$imgid" != x ]
    then
    docker rmi $imgid
fi

# 构建Docker镜像
docker build -t $IMAGE_NAME .

# 推送Docker镜像
#docker push $IMAGE_NAME

# 启动Docker容器 --link 需要连接的容器名
docker run -d -p $API_PORT:$API_PORT --link eureka-0.0.1 --name $CONTAINER_NAME $IMAGE_NAME

# 删除Dockerfile文件
rm -f Dockerfile

echo "----结束docker部署----"

$module是前面设置的构建参数

Dockerfile文件编译成docker镜像
docker-compose.yml文件编译一组容器

编写docker-compose.yml文件,使用docker-compose up -d运行

version: '3'

services:
  product-service:
    image: product-service:latest

  customer-service:
    image: customer-service:latest
    links:
      - product-service
  gateway-service:
    image: gateway-service:latest
    ports:
      - 8080:8080
    links:
      - product-service
      - customer-service

version 1 2 3语法格式不同

shell脚本docker run应该使用docker-compose.yml进行容器编排

– link 容器与容器间访问

如果出错,可以观察容器的logs,docker logs 观察日志情况

apt-get update更新apt服务

apt-get install net-tools 安装netstat服务

netstat -na|grep 8099监听8099端口

telnet ip port 测试连接是否成功

你可能感兴趣的:(jenkens,maven,docker)