栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jenkins+docker自动化部署

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jenkins+docker自动化部署

参考文献:Jenkins与Docker的自动化CI/CD实战【附源码】_李振良_阿良_51CTO博客

遇到的问题:

1、我们使用的jdk放置了微信专用的jar。所以自己建了一个基础镜像,参考文献:Docker:JDK镜像制作_陌生谁家年少-CSDN博客_制作jdk镜像  

2、同一台机器部署多个docker时 隐射的日志目录不能相同,所以我们按端口号建立了文件夹

3、自学 Dockerfile 命令 docker 命令(注意: RUN 制作镜像时运行 CMD 容器启动时运行,docker run  命令参数熟练运用 )

4、网络问题容器ip注册到nacos上后,dubbo无法调用到,使用宿主机的网络  docker run  --network host

5、容器和宿主机时间不同 

ENV TZ=Asia/Shanghai

6、日志乱码问题构建文件 加入

ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8 

相关代码:

1、自定义jdk基础镜像文件Dockerfile

FROM centos:7
MAINTAINER linxk
ADD jdk8211.tar.gz /usr/local

ENV JAVA_HOME /usr/local/jdk1.8.0_211
ENV JRE_HOME /usr/local/jdk1.8.0_211/jre
ENV PATH $JAVA_HOME/bin:$PATH

2、构建服务镜像并上传私有镜像仓库、清理历史镜像

​
REPOSITORY=106.54.153.203:5000/cif${port}
# 构建镜像
cat > Dockerfile << EOF

FROM jdk-8u211:v1

MAINTAINER linxk
 
ENV VERSION=8.5.39

ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8 
ENV TZ=Asia/Shanghai

ENV ip=$(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F "/" '{print $1}')

COPY cif-service/target/cif.jar /opt

 
CMD sed -i "s/127.0.0.1/$ip/g" /etc/hosts


CMD java -jar -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled -XX:ErrorFile=/var/logs/cif/hs_err_pid%p.log   -Xloggc:/var/logs/cif/gc.log -XX:HeapDumpPath=/var/logs/cif -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumponOutOfMemoryError -XX:+PrintCommandLineFlags -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintHeapAtGC /opt/cif.jar >/dev/null  --server.port=${port} --spring.profiles.active=${active} --dubbo.application.qos.port=-1
EOF
docker build -t $REPOSITORY .
# 上传镜像
docker push $REPOSITORY

echo ---------------Clear-Images...------------------
    clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
    echo "no images need clean up."
else
    docker rmi $(docker images -f "dangling=true" -q)
    echo "clear success."
fi

​

3、执行目标服务器关闭容器,拉取最新镜像,启动容器

REPOSITORY=106.54.153.203:5000/cif${port}
# 部署
docker rm -f cif${port}
docker rmi $REPOSITORY
# -p ${port}:${port}
docker run -d --name cif${port} --network host    -v /var/logs/cif/${port}/:/var/logs/cif/ $REPOSITORY

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/362539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号