1.开发Springbot应用
新建多个环境的配置文件
bootstrap.yaml
通过变量获取不同环境active
bootstrap-dev.yml
bootstrap-pre.yaml
预发布及生产环境配置文件走nacos
二.配置docker
新增Dockerfile文件
Dockerfile内容
-
# Docker image for springboot file run
-
# VERSION 0.0.1
-
# Author: eangulee
-
# 基础镜像使用java
-
FROM openjdk:8
-
# 作者
-
MAINTAINER qql <xxx@qq.com>
-
# VOLUME 指定了临时文件目录为/tmp。
-
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
-
VOLUME /tmp
-
# 设置时区
-
ENV TZ=Asia/Shanghai
-
RUN
ln -snf /usr/share/zoneinfo/
$TZ /etc/localtime &&
echo
$TZ > /etc/timezone
-
# 将jar包添加到容器中并更名为app.jar
-
ARG JAR_FILE
-
ADD target/cdc-0.0.1-SNAPSHOT.jar /app.jar
#替换成你项目打包后的文件名称
-
#配置项目端口
-
EXPOSE 8020
-
# 运行jar包
-
RUN bash -c
'touch /app.jar'
-
ENTRYPOINT [
"java",
"-jar",
"/app.jar",
"--spring.profiles.active=${env}"]
#通过变量传递不同的环境
在服务器项目下新增docker-composer.yaml文件 ,不要放在代码版本库
-
version:
'3'
-
services:
-
project-demo:
-
container_name: cdcd-demo
#自定义容器名称
-
image: qql/cdcd:0.0.1
#镜像名称
-
restart: always
-
environment:
-
env: dev
#环境,不同环境使用不同环境名称
-
volumes:
-
# 同步时间
-
- /etc/localtime:/etc/localtime:ro
-
# 如果项目有些日志或者写文件,需要同步到宿主机器,也需要定义相应的卷
-
# - ./data:/etc/project-demo/data
-
# - ./log:/etc/project-demo/log
-
ports:
-
- 8080:8020
三.配置Jenkins
新增部署shell脚本
-
#!/bin/bash
-
echo
"当前位置"
-
pwd
-
-
mvn clean package -Dmaven.test.skip=
true
-
#切换到项目目录
-
cd cdc
-
pwd
-
#获取最新版本tag
-
LatestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
-
echo -e
"最新版本tag......"
-
echo -e
"$LatestTag"
-
echo -e
"镜像地址"
-
-
-
#获取本机IP
-
local_ip=`ifconfig eth0 | grep
'inet' | awk
'{print $2}' | sed -e
"s/addr\://"`
-
echo
${local_ip}
-
#制作docker镜像
-
docker build -f Dockerfile -t qql/cdc:1.0 .
-
echo
"制作成功"
-
cd ../docker
-
pwd
-
#根据docker-composer.yaml文件新建获取重新构建docker容器
-
docker-compose -f docker-composer.yaml -p cdc up -d
-
step=1
#间隔的秒数,不能大于60
-
content=
""
-
-
for (( i =
0; i <
60; i=(i+step) ));
do
-
status_code=$(curl -I -m 10 -o /dev/null -s -w %{http_code} 127.0.0.1:8080/index/index)
#访问服务一个接口验证容器是否启动
-
echo
$status_code
-
if [
$status_code != 200 ];
then
-
sleep
$step
-
echo
"服务还没有启动,耗时"
$i
"秒"
-
else
-
echo
"服务已经启动,耗时"
$i
"秒"
-
break
-
fi
-
-
if [
$i == 59 ];
then
-
echo
"启动失败"
-
exit -1
-
fi
-
done
-
-
{
-
docker rmi `docker images | grep none | awk
'{print $3}'` && /
-
-
} || {
-
echo
'delete null images error(不需要处理)'
-
}
保存,则就可以执行部署
执行构建
转载:https://blog.csdn.net/qq_36514588/article/details/129185721
查看评论