这篇文章给大家介绍jenkins中怎么利用docker部署微服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
DOckerFile 格式如下
FROM java:8-jre
MAINTAINER 303600370@qq.com
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /gateway
WORKDIR /gateway
EXPOSE 9999
docker build -t upms:1.0 . //注意此处DockerFile在当前目录,否则请指定路径
//查看我们生成的镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
upms 1.0 5a85b918f97b About an hour ago 311MB
auth 1.0 ebe9c89204a3 2 hours ago 311MB
gateway 1.0 d569bd2776b5 2 hours ago 311MB
register 1.0 72b8e3d9053d 6 hours ago 311MB
jenkinsci/blueocean latest 15c11ce3d610 46 hours ago 567MB
jenkins/jenkins latest ca03aad4393c 2 days ago 648MB
gogs/gogs latest a9376695685c 3 days ago 90.6MB
portainer/portainer latest 2869fc110bf7 4 weeks ago 78.6MB
java 8-jre e44d62cf8862 3 years ago 311MB
docker run \
-u root \
--rm \ --1
-d \ --2
-p 8080:8080 \ --3
-p 50000:50000 \ --4
-v jenkins-data:/var/jenkins_home \ --5
-v /var/run/docker.sock:/var/run/docker.sock \ --6
jenkinsci/blueocean --7
1 jenkinsci/blueocean 关闭时自动删除Docker容器(下图为实例)。如果您需要退出Jenkins,这可以保持整洁。
2 jenkinsci/blueocean 在后台运行容器(即“分离”模式)并输出容器ID。如果您不指定此选项, 则在终端窗口中输出正在运行的此容器的Docker日志。
3 映射(例如“发布”)jenkinsci/blueocean 容器的端口8080到主机上的端口8080。 第一个数字代表主机上的端口,而最后一个代表容器的端口。因此,如果您为此选项指定 -p 49000:8080 ,您将通过端口49000访问主机上的Jenkins。
4 将 jenkinsci/blueocean 容器的端口50000 映射到主机上的端口50000。 如果您在其他机器上设置了一个或多个基于JNLP的Jenkins代理程序,而这些代理程序又与 jenkinsci/blueocean 容器交互(充当“主”Jenkins服务器,或者简称为“Jenkins主”), 则这是必需的。默认情况下,基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主站进行通信。 您可以通过“ 配置全局安全性” 页面更改Jenkins主服务器上的端口号。如果您要将您的Jenkins主机的JNLP代理端口的TCP端口 值更改为51000(例如),那么您需要重新运行Jenkins(通过此 docker run …命令)并指定此“发布”选项 -p 52000:51000,其中最后一个值与Jenkins master上的这个更改值相匹配,第一个值是Jenkins主机的主机上的端口号, 通过它,基于JNLP的Jenkins代理与Jenkins主机进行通信 - 例如52000。
映射在容器中的`/var/jenkins_home` 目录到具有名字 jenkins-data 的volume。 如果这个卷不存在,那么这个 docker run 命令会自动为你创建卷。 如果您希望每次重新启动Jenkins(通过此 docker run ... 命令)时保持Jenkins状态,则此选项是必需的 。 如果你没有指定这个选项,那么在每次重新启动后,Jenkins将有效地重置为新的实例。
5 所述的 jenkins-data 卷也可以 docker volume create命令创建: docker volume create jenkins-data 代替映射 /var/jenkins_home 目录转换为Docker卷,还 可以将此目录映射到计算机本地文件系统上的目录。 例如,指定该选项 -v $HOME/jenkins:/var/jenkins_home 会将容器的 /var/jenkins_home 目录映射 到 本地计算机上目录中的 jenkins 子目录, 该$HOME目录通常是 /Users/<your-username>/jenkins 或`/home/<your-username>/jenkins` 。
6 (可选 /var/run/docker.sock 表示Docker守护程序通过其监听的基于Unix的套接字。 该映射允许 jenkinsci/blueocean 容器与Docker守护进程通信, 如果 jenkinsci/blueocean 容器需要实例化其他Docker容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含agent部分用 docker
例如, agent { docker { ... } } 此选项是必需的。 在Pipeline Syntax 页面上阅读更多关于这个的信息 。
jenkinsci/blueocean Docker镜像本身。如果此镜像尚未下载,则此 docker run 命令 将自动为您下载镜像。此外,如果自上次运行此命令后发布了此镜像的任何更新, 则再次运行此命令将自动为您下载这些已发布的镜像更新。 注意:这个Docker镜像也可以使用以下 docker pull命令独立下载(或更新) : docker pull jenkinsci/blueocean 注意: 如果复制并粘贴上面的命令片段不起作用,请尝试在此处复制并粘贴此无注释版本:
完整命令
docker run -u root -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --restart=always jenkinsci/blueocean
jenkins 使用默认安装后,登录页面
新建一个构建任务(作为代码管理)
选择git
保存任务 -> 构建任务
java 服务构建
新建任务 (添加shell)
BUILD_ID=donKillMe
api_pid=` docker ps -a | grep getaway | awk '{print $1}'`
echo api_pid = $api_pid
if [ "$api_pid" != "" ]; then
echo restart getaway
docker restart $api_pid
echo sleep 3s
fi
if [ "$api_pid" == "" ]; then
echo mkdir images
docker run --add-host=pigx-mysql:172.17.0.1 -d -p 4000:4000 -v /getaway:/getaway --name getaway getaway:1.0 java -jar /getaway/getaway.jar
echo sleep 3s
fi
构建
jenkins 数据地址 (可能)
//项目根目录
/var/lib/docker/volumes/jenkins-data/_data/workspace/
//jar目录
/var/jenkins_home/workspace/getaway/target/getaway.jar
//日志目录
/var/lib/docker/volumes/jenkins-data/_data/workspace/getaway/logs/
初始密码 目录 /var/jenkins_home/secrets/initialAdminPassword
关于jenkins中怎么利用docker部署微服务就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。