前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins+Docker实现CI/CD

Jenkins+Docker实现CI/CD

作者头像
用户2032165
发布2019-04-01 11:19:52
1.2K0
发布2019-04-01 11:19:52
举报

看到这一张图,我们就知道践行持续集成(CI)、持续部署(CD),可以简化工作流程,提高工作效率。

Jenkins+Docker流程标准.png

docker配置阿里云镜像仓库

2、进去注册帐号后,点击自己的管理中心。

3、在管理中心点击加速器,右边面板会有你的加速地址,右边面板下面有详细设置步骤。

4、配置docker镜像加速器

image.png

maven构建docker镜像

代码语言:javascript
复制
<plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.11</version>

                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>

                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                        <imageTag>latest</imageTag>
                    </imageTags>

                    <dockerDirectory>src/main/docker</dockerDirectory>

                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

src/main/docker 目录下新增文件 Dockerfile

如果是jar包的话

代码语言:javascript
复制
FROM frolvlad/alpine-oraclejdk8:slim
MAINTAINER cmazxiaoma
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
RUN sh -c 'touch /demo.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar" ]

如果是war包的话

代码语言:javascript
复制
from docker.io/tomcat:latest
maintainer 1363xx39xx@qq.com
copy demo-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/demo.war

创建阿里云docker镜像

1.创建镜像仓库

image.png

2.选择代码源、构建设置、构建规则设置。

image.png

3.操作指南

image.png

image.png

jenkins部署项目

配置之前先配置好jenkins服务器和应用服务器的密钥认证
  • Jenkins服务器上生成密钥对,使用ssh-keygen -t rsa命令

image.png

  • 将jenkins服务器的公钥192.168.0.6.pub中的内容复制到应用服务器 的~/.ssh/下的 authorized_keys文件(这里我的jenkins服务器和应用服务器都是192.168.0.6)
代码语言:javascript
复制
ssh-copy-id -i 192.168.0.6.pub 192.168.0.6
cd /root/.ssh
chmod 644 authorized_keys(别写成了664)
  • 进入到/etc/ssh/sshd_config配置PermitRootLogin no
  • 在应用服务器上重启 ssh 服务service sshd restart,现在 Jenkins 服务器可免密码直接登陆应用服务器。

1.关于jenkins的基本操作,可以看这一篇文章Jenkins环境搭建部署web应用

2.构建触发器,轮询SCM就是查看源码管理的代码有没有更新,如果更新了就去构建,没有更新就不会构建。 H/5 * * * * 代表每5分钟就去查看源码有没有更新

image.png

3.设置build

代码语言:javascript
复制
clean package -Dmaven.test.skip=true docker:build

image.png

4.设置构建的shell脚本

image.png

5.构建脚本如下:

代码语言:javascript
复制
echo '================开始推送镜像================'
sudo docker login --username=xx@163.com --password=xx registry.cn-shenzhen.aliyuncs.com
sudo docker tag cmazxiaoma/demo:0.0.1-SNAPSHOT registry.cn-shenzhen.aliyuncs.com/cmazxiaoma/demo:0.0.1-SNAPSHOT
sudo docker push registry.cn-shenzhen.aliyuncs.com/cmazxiaoma/demo:0.0.1-SNAPSHOT
echo '================结束推送镜像================'
echo '================开始远程启动================'

#首先要ssh上去注意这里的<< remotessh,需要做公钥密钥
ssh root@192.168.0.6 -tt << remotessh       

#从这里开始都是在远程机器上执行命令
cd /usr/local/aliyun-docker

./jenkins.sh demo-container

echo '========停止并删除旧的容器成功============='


sudo docker login --username=xx@163.com --password=xx registry.cn-shenzhen.aliyuncs.com 
sudo docker pull registry.cn-shenzhen.aliyuncs.com/cmazxiaoma/demo:0.0.1-SNAPSHOT

sudo docker run -itd -m 500m -p 9020:9020 --name=demo-container --restart=always registry.cn-shenzhen.aliyuncs.com/cmazxiaoma/demo:0.0.1-SNAPSHOT
echo "finished!"

#执行完毕,退出远程机器
exit
remotessh
echo '================结束远程启动================'

6.jenkins.sh(记得chmod 777)脚本停掉并删除无用的docker容器

代码语言:javascript
复制
#!/bin/sh
sudo docker stop  $(sudo docker ps | grep $1|awk '{print  $1}'|sed 's/%//g')
sudo docker rm $(sudo docker ps -a | grep $1|awk '{print  $1}'|sed 's/%//g')

7.可以通过日志查看构建情况。

image.png

8.构建完成后,我们可以在阿里云查看镜像。

image.png

  1. 访问http://192.168.0.6:9020/jenkins/hello,成功

image.png

docker一些有用的命令

删除无效的none镜像:docker rmi $(docker images -f "dangling=true" -q)

尾言

用docker一时爽,一直用docker一直爽。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker配置阿里云镜像仓库
  • maven构建docker镜像
  • src/main/docker 目录下新增文件 Dockerfile
  • 创建阿里云docker镜像
  • jenkins部署项目
  • docker一些有用的命令
  • 尾言
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档