一、安装Docker
#安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装最新版本
yum install docker-ce docker-ce-cli containerd.io
#启动并加入开机启动
sudo systemctl start docker
#查看安装是否成功
docker version
#安装portainer
docker pull portainer/portainer
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer --restart=always portainer/portainer
输入ip:9000进入登录界面
二、安装Jenkins
docker pull jenkinsci/blueocean
docker run -u root -d -e TimeZone=Asia/Shanghai -v /home/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name=jenkins --restart=always --network host jenkinsci/blueocean
访问ip加8080
因为修改了默认地址、按运行容器时修改的地址找
重启容器,进入系统管理
插件管理
安装以下插件(或者在安装时选择自定义安装时选择)
Extended Choice Parameter
系统配置
编译项目
创建镜像文件并发布到私库
运行到docker容器内
# 查询是否存在容器
if [ "$(docker ps -aq -f name=${NAME})" ]; then
echo "存在容器"
# 查询容器是否运行
if [ "$(docker ps -aq -f status=running -f name=${NAME})" ]; then
# cleanup
docker stop ${NAME} && docker rm -f ${NAME} &&
echo "旧容器已删除!!!!!!!!"
docker rmi $(docker images | grep "${NAME}*" | awk '{print $3}') &&
echo "旧镜像已删除!!!!!!!!"
fi
# run your container
docker rm -f ${NAME} &&
echo "旧容器已删除!!!!!!!!"
docker rmi $(docker images | grep "${NAME}*" | awk '{print $3}') &&
echo "旧镜像已删除!!!!!!!!"
fi
echo "开始发布!!!!!!!!"
docker login -u admin -p 密码 私库地址 &&
docker pull 私库地址/${NAME}:${TAG} &&
docker run -d -e SPRING_PROFILES_ACTIVE="test" -e NACOS_NAMESPACE="548a9a53-d095-4259-a0ca-6514dcbd0e56" --name=${NAME} --restart=always --network host 私库地址/${NAME}:${TAG} &&
echo "重新发布成功!!!!!!!!"
查询最新镜像并运行
$NAME为镜像名称
array=(${server//,/ })
for NAME in ${array[@]}
do
echo $NAME
# 查询是否存在容器
if [ "$(docker ps -aq -f name=$NAME)" ]; then
echo "存在容器"
# 查询容器是否运行
if [ "$(docker ps -aq -f status=running -f name=$NAME)" ]; then
# cleanup
docker stop $NAME && docker rm -f $NAME &&
echo "旧容器已删除!!!!!!!!"
docker rmi $(docker images | grep "$NAME*" | awk '{print $3}') &&
echo "旧镜像已删除!!!!!!!!"
fi
# run your container
docker rm -f $NAME &&
echo "旧容器已删除!!!!!!!!"
docker rmi $(docker images | grep "$NAME*" | awk '{print $3}') &&
echo "旧镜像已删除!!!!!!!!"
fi
echo "开始发布!!!!!!!!"
docker login -u admin -p xx xx &&
docker pull $(docker search --limit 1000 xx/$NAME |awk '{print $1}' |tail -n 1) &&
docker run -d -e SPRING_PROFILES_ACTIVE="test" -e NACOS_NAMESPACE="548a9a53-d095-4259-a0ca-6514dcbd0e56" --name=${NAME} --restart=always --network host $(docker search --limit 1000 xx/$NAME |awk '{print $1}' |tail -n 1) &&
echo "重新发布成功!!!!!!!!"
done
Dockerfile文件
# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java 定制的镜像都是基于 FROM 的镜像,这里的 java 就是定制需要的基础镜像。后续的操作都是基于 java。
FROM java:8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将压缩包解压到/usr/local/src
ADD hierway-warning-service-dist.tar.gz /usr/local/src
# 更新hierway-auth的存取和修改时间
RUN bash -c 'touch /usr/local/src/hierway-warning-service/hierway-warning-service.jar && touch /usr/local/src/hierway-warning-service/agent/skywalking-agent.jar'
# 更新hierway-auth的存取和修改时间
#-Djava.security.egd=file:/dev/./urandom 加快随机数产生 缩短 Tomcat 启动时间
ENTRYPOINT ["java" ,"-javaagent:/usr/local/src/hierway-warning-service/agent/skywalking-agent.jar","-Dskywalking.agent.service_name=hierway-warning-service-test","-Dskywalking.collector.backend_service=127.0.0.1:11800","-Dfile.encoding=utf-8","-Djava.security.egd=file:/dev/./urandom","-Dspring.cloud.nacos.config.server-addr=${SERVER-ADDR}","-Dspring.cloud.nacos.config.namespace=${NACOS_NAMESPACE}","-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}","-jar","/usr/local/src/hierway-warning-service/hierway-warning-service.jar" ]
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone