Jenkins+docker自动化部署

本文档介绍了在Docker中构建自定义JDK镜像,解决多容器日志目录冲突,掌握Dockerfile与docker命令,处理网络及时间同步问题,以及日志乱码的解决方案。通过Dockerfile创建服务镜像,并实现自动化构建、上传和部署流程。同时,展示了如何关闭、删除旧容器,拉取新镜像并启动容器,确保服务更新。
摘要由CSDN通过智能技术生成

参考文献: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


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

 



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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值