基于Jenkins自动打包并部署docker环境

基于上一章 基于Jenkins自动打包并部署Tomcat环境_学习新鲜事物的博客-CSDN博客

1、安装docker-ce

在tomcat上创建远程命令

root@tomcat \~\]# mkdir /data

在tomcat上构建 tomcat基础镜像。在构建基础镜像之前需要先安装 Docker 与 JDK。

root@tomcat \~\]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \[root@tomcat \~\]# yum -y install yum-utils device-mapper-persistent-data lvm2 \[root@tomcat \~\]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 已加载插件:fastestmirror adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo

安装dockers启动并查看

root@tomcat \~\]# yum -y install docker-ce \[root@tomcat \~\]# systemctl start docker \[root@tomcat \~\]# systemctl enable docker \[root@tomcat \~\]# docker version Client: Docker Engine - Community Version: 24.0.5 API version: 1.43 Go version: go1.20.6 Git commit: ced0996 Built: Fri Jul 21 20:39:02 2023 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 24.0.5 API version: 1.43 (minimum version 1.12) Go version: go1.20.6 Git commit: a61e2b4 Built: Fri Jul 21 20:38:05 2023 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.22 GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca runc: Version: 1.1.8 GitCommit: v1.1.8-0-g82f18fe docker-init: Version: 0.19.0 GitCommit: de40ad0

2 、阿里云镜像加速器

root@tomcat \~\]# cat \<\< END \> /etc/docker/daemon.json \> { \> "registry-mirrors":\[ "https://nyakyfun.mirror.aliyuncs.com"

> }

> END

root@tomcat \~\]# systemctl daemon-reload \[root@tomcat \~\]# systemctl restart docker \[root@tomcat \~\]# cat centos-7-x86_64.tar.gz \| docker import - centos:7 sha256:a94721bf20e6e706ea0ab02bb4283bcd992e760542620aa908143dcf52012e39 \[root@tomcat \~\]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 7 a94721bf20e6 3 seconds ago 589MB

3、构建tomcat 基础镜像

root@tomcat \~\]# mkdir docker-tomcat \[root@tomcat \~\]# cd docker-tomcat/ \[root@tomcat docker-tomcat\]# ls \[root@tomcat docker-tomcat\]# rz \[root@tomcat docker-tomcat\]# ll 总用量 196724 -rw-r--r--. 1 root root 9690027 7月 17 2020 apache-tomcat-8.5.40.tar.gz -rw-r--r--. 1 root root 191753373 7月 17 2020 jdk-8u191-linux-x64.tar.gz \[root@tomcat docker-tomcat\]# vim Dockerfile \[root@tomcat docker-tomcat\]# cat Dockerfile FROM centos:7 MAINTAINER from crushlinux \ #copy jdk and tomcat into image ADD ./apache-tomcat-8.5.40.tar.gz /usr/local/ ADD ./jdk-8u191-linux-x64.tar.gz /usr/local #set variable ENV JAVA_HOME /usr/local/jdk1.8.0_191 ENV PATH $JAVA_HOME/bin:$PATH #container starts up ENTRYPOINT /usr/local/apache-tomcat-8.5.40/bin/startup.sh \&\& tail -F /usr/local/apache-tomcat-8.5.40/logs/catalina.out

root@tomcat docker-tomcat\]# docker build -t tomcat:v1 . > \[+\] Building 4.2s (8/8) FINISHED docker:default > > =\> \[internal\] load .dockerignore 0.0s > > =\> =\> transferring context: 2B 0.0s > > =\> \[internal\] load build definition from Dockerfile 0.0s > > =\> =\> transferring dockerfile: 508B 0.0s > > =\> \[internal\] load metadata for docker.io/library/centos:7 0.0s > > =\> CACHED \[1/3\] FROM docker.io/library/centos:7 0.0s > > =\> \[internal\] load build context 0.1s > > =\> =\> transferring context: 9.69MB 0.1s > > =\> \[2/3\] ADD ./apache-tomcat-8.5.40.tar.gz /usr/local/ 0.2s > > =\> \[3/3\] ADD ./jdk-8u191-linux-x64.tar.gz /usr/local 2.6s > > =\> exporting to image 1.3s > > =\> =\> exporting layers 1.3s > > =\> =\> writing image sha256:e4cb1349c52e1c727d193642f455b4fbf0e99030edb836d17aca30cfafc7ae61 0.0s > > =\> =\> naming to docker.io/library/tomcat:v1 ## ******4**** ****、**** ****构建一个Maven项目****** 在以上配置完成后,回到 Jenkins 首页,选择"新建任务",然后输入一个任务名称 "probe-docker",并选择"Maven project"配置项,点击当前页面下方的"确定"按钮。 ![](https://file.jishuzhan.net/article/1695289643739648001/269ad851f4cc4535852bd92addb59050.png) probe-docker ![](https://file.jishuzhan.net/article/1695289643739648001/dc39b5da5e284e1c93b532bf3a54fa7c.png) 在点击"确定"按钮,选择"源码管理"并选中"Git",设置"Repository URL"地址。 [++++git@192.168.50.51:/home/git/probe.git++++](mailto:git@192.168.50.51:/home/git/probe.git) ![](https://file.jishuzhan.net/article/1695289643739648001/80210dfbf02b4dcc93c66897652d5e22.png) 选择"Build"-\> clean package -Dmaven.test.skip=true ![](https://file.jishuzhan.net/article/1695289643739648001/2c56e0d778804fc1b436c705bf70f913.png) ![](https://file.jishuzhan.net/article/1695289643739648001/7ce31f8938c54ce39221a03731066d0e.png) 在上一步后面选择"构建后操作"中的"Send build artfacts over SSH"选项并进行。 > scp 192.168.50.53:/root/.jenkins/workspace/probe-docker/psi-probe-web/target/probe.war /data/ > > docker run -itd --name tomcat-test -p 8090:8080 -v /data:/usr/local/apache-tomcat-8.5.40/webapps tomcat:v1 以上全部配置完成后,点击保存即可。然后点击刚才创建的工程任务"probe-docker"-\>" Build new"直至任务构建完成。开始构建过程中可以点击进度条查看 ![](https://file.jishuzhan.net/article/1695289643739648001/371f1ba1b0d34f29b1c85f9a8e574e37.png) ![](https://file.jishuzhan.net/article/1695289643739648001/f342b35e65ea4fb694a7106cc1f6a48c.png) 可以看到此工程任务已构建成功,并且在构建后,创建用于docker项目的 Docker Web 环境命令也执行成功。 \[root@tomcat data\]# ll > 总用量 26616 > > drwxr-x---. 7 root root 88 8月 25 19:17 probe > > -rw-r--r--. 1 root root 27253017 8月 25 19:17 probe.war > > \[root@tomcat docker-tomcat\]# docker ps -a > > CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES > > 0ed51e281414 tomcat:v1 "/bin/sh -c '/usr/lo..." About a minute ago Up About a minute 0.0.0.0:8090-\>8080/tcp, :::8090-\>8080/tcp tomcat-test 浏览器访问[http://192.168.50.54:8090/probe/](http://192.168.50.54:8090/probe/ "http://192.168.50.54:8090/probe/")![](https://file.jishuzhan.net/article/1695289643739648001/006d057d22094e4aaf09ff0266f8d75b.png) 登陆进容器 > \[root@tomcat docker-tomcat\]# docker exec -it 0 /bin/bash > > \[root@0ed51e281414 /\]# vim /usr/local/apache-tomcat-8.5.40/conf/tomcat-users.xml > > 44 \ > > 45 \ > > 46 \ > > 47 \ 在这一行上面加三行 重载启动 > \[root@tomcat data\]# systemctl daemon-reload > > \[root@tomcat docker-tomcat\]# systemctl restart docker 会挂掉从新启动就好了 > \[root@tomcat docker-tomcat\]# docker ps -a > > CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES > > 0ed51e281414 tomcat:v1 "/bin/sh -c '/usr/lo..." 4 minutes ago Exited (137) 17 seconds ago tomcat-test > > \[root@tomcat docker-tomcat\]# docker start 0 > > 0 > > \[root@tomcat docker-tomcat\]# docker ps -a > > CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES > > 0ed51e281414 tomcat:v1 "/bin/sh -c '/usr/lo..." 5 minutes ago Up 1 second 0.0.0.0:8090-\>8080/tcp, :::8090-\>8080/tcp tomcat-test 用户 tomcat 密码 tomcat ![](https://file.jishuzhan.net/article/1695289643739648001/f5488a85ba7e4c50a35780ab0383c441.png) 看到这里就成功了![](https://file.jishuzhan.net/article/1695289643739648001/4bb266f851bf4724bb949d4e922010c3.png) # 可能错误 把容器删除从新创建 > > ``` > SSH: Connecting from host [jemkins] > SSH: Connecting with configuration [web] ... > SSH: EXEC: completed after 608 ms > SSH: Disconnecting configuration [web] ... > ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [125]] > Build step 'Send build artifacts over SSH' changed build result to UNSTABLE > Finished: UNSTABLE > ```

相关推荐
AmosTian5 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
YC运维6 小时前
RIP实验以及核心原理
运维·网络·智能路由器
慕木兮人可7 小时前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器
leo__5207 小时前
自动化运维:使用Ansible简化日常任务
运维·自动化·ansible
霖007 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
CodeWithMe8 小时前
【Note】《Kafka: The Definitive Guide》 第九章:Kafka 管理与运维实战
运维·分布式·kafka
bug攻城狮9 小时前
Alloy VS Promtail:基于 Loki 的日志采集架构对比与选型指南
运维·架构·grafana·数据可视化
CodeWithMe10 小时前
【Note】《深入理解Linux内核》 第十九章:深入理解 Linux 进程通信机制
linux·运维·php
armcsdn10 小时前
基于Docker Compose部署Traccar容器与主机MySQL的完整指南
mysql·docker·容器