Jenkins+docker自动化部署

Jenkins+docker自动化部署,第1张

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 }' |awk -F "/" '{print }')

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4874708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存