网站开发 项目的招标文件,某某公司电子商务网站建设与维护,做网站属于It行业吗,wordpress-5.6.20下载【Jenkins】持续集成部署学习 【一】Jenkins介绍【二】Docker安装Gitlab【1】首先准备一台空的虚拟机服务器【2】安装服务器所需的依赖【3】Docker的安装【4】阿里云镜像加速【5】安装Gitlab 【三】Gitlab的使用#xff08;1#xff09;Gitlab创建项目#xff08;2#xff… 【Jenkins】持续集成部署学习 【一】Jenkins介绍【二】Docker安装Gitlab【1】首先准备一台空的虚拟机服务器【2】安装服务器所需的依赖【3】Docker的安装【4】阿里云镜像加速【5】安装Gitlab 【三】Gitlab的使用1Gitlab创建项目2Idea工具创建本地仓库3选择此项目根目录作为发布的仓库4把项目ADD添加到git缓冲区5再将项目COMMIT提交到本地仓库6把项目PUSH推送到远程仓库7查看commit的几次就是看版本8创建分支 【四】Docker安装Jenkins【1】安装JDK、Maven、Git可跳过1安装JDK2安装Maven3安装Git 【2】安装Jenkins1拉取镜像2修改目录权限3运行容器4浏览器访问Jenkins页面5获取管理员密码6安装插件7创建管理员8实例配置9通过docker安装的jenkins自带git和JDK就不需要再安装了10查看Jenkins版本 【五】Jenkins使用【1】配置插件镜像【2】定制安装所需的插件1安装publish over ssh2安装Maven Integration3安装中文翻译插件4安装Git插件 【3】开始配置1配置ssh可跳过在后面用到的时候配2配置jdk和maven和git1配置JDK2配置maven选用默认的即可3配置git 【4】使用Jenkins部署springboot的helloworld项目最易启动1准备一个springboot的helloworld项目2Jenkins新建任务3到Gitlab的项目里复制克隆路径4Jenkins的项目配置 【5】将上面的helloworld项目部署到远程测试服务器上1介绍2修改全局配置3打开项目配置4远程服务器开启SSH5再次构建查看构建日志6到远程服务器上看看7看看jar是否已经自动启动 【6】准备一个Docker启动的CRUD项目1远程测试服务器搭建运行环境1安装Docker2Docker安装Portainer3Docker安装Mysql4Docker安装JDK 2创建一个springboot项目3docker创建网络4把项目打成jar包5创建Dockerfile文件并上传jar包6用dockerfile构建镜像7使用镜像创建容器8本地测试 【7】使用Jenkins部署上面的Docker项目1在项目文件里加上Dockerfile2上传到git3修改全局配置在上面helloworld项目已经配置过了4Jenkins创建新项目5修改jenkins里docker_springboot项目的配置5立即构建6控制台输出报错7再次构建8查看Docker镜像是否启动9本地接口访问测试 【一】Jenkins介绍 【二】Docker安装Gitlab
【1】首先准备一台空的虚拟机服务器
Gitlab用的端口是80可能会跟其它应用冲突并且Gitlab所需内存也很大所以还是单独放在一个服务器上比较好。 用原来空的虚拟机服务器克隆一个注意内存要选大一点6G左右
【2】安装服务器所需的依赖
1ip a / ip addr / ifconfig 不显示ip问题
yum install iproute ftp bind-utils net-tools wget -y【3】Docker的安装
1查看系统的内核版本
uname -r 4.18.0-80.11.2.el8_0.x86_64执行命令uname -r 注意x86 64位系统如果是32位是不能安装 docker 的
2yum更新到最新版本
sudo yum -y update执行命令sudo yum update 注意看到显示 Complete 就代表完成了整个过程需要 5-10 分钟左右
更新gccC语言的编译环境
yum -y install gcc
yum -y install gcc-c3安装Docker所需的依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2执行命令sudo yum install -y yum-utils device-mapper-persistent-data lvm2 注意看到显示 Complete 就代表完成了整个过程需要 1-3 分钟左右
4设置Docker的yum的源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo5更新yum软件包索引
yum makecache fast6查看仓库所有Docker版本
yum list docker-ce --showduplicates | sort -r7安装Docker 安装默认最新版本的Docker
yum -y install docker-ce docker-ce-cli containerd.io8启动Docker并添加开机自启动 启动Docker
sudo systemctl start docker设置开机启动Docker
systemctl enable docker重启docker
systemctl restart docker停止docker
systemctl stop docker9查看Docker版本
docker --version10测试
ps -ef|grep dockerdocker version11卸载Docker
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd12Docker常用命令
[rootCodeGuide ~]# docker --help #Docker帮助
[rootCodeGuide ~]# docker --version #查看Docker版本
[rootCodeGuide ~]# docker search image #搜索镜像文件如docker search mysql
[rootCodeGuide ~]# docker pull image #拉取镜像文件 如docker pull mysql
[rootCodeGuide ~]# docker images #查看已经拉取下来的所以镜像文件
[rootCodeGuide ~]# docker rmi image #删除指定镜像文件
[rootCodeGuide ~]# docker run --name name -p 80:8080 -d image #发布指定镜像文件
[rootCodeGuide ~]# docker ps #查看正在运行的所有镜像
[rootCodeGuide ~]# docker ps -a #查看所有发布的镜像
[rootCodeGuide ~]# docker rm image #删除执行已发布的镜像13如何创建自启动的容器 1还没run创建容器的 使用 docker run 命令运行时增加 --restartalways 参数即可
2已运行的容器修改其自启动策略 执行命令 docker update --restartalways 容器名或容器ID docker container update --restart【容器策略】 容器名称
# no 容器退出时不重启容器
# on-failure 只有在非零状态退出时才重新启动容器
--restarton-failure:【重启次数】
# always 无论退出状态如何都【4】阿里云镜像加速
1获取阿里云加速器地址 登陆阿里云点击控制台然后点击菜单找到“容器镜像服务”
创建个人容器镜像托管服务
然后点击镜像工具进入镜像加速器即可看到阿里云加速器地址把这个加速器地址配置到docker容器里
2创建文件夹并执行脚本 先创建文件夹
mkdir -p /etc/docker执行脚本
tee /etc/docker/daemon.json -EOF
{registry-mirrors: [https://xqybwad5.mirror.aliyuncs.com]
}
EOF3重新加载配置文件
systemctl daemon-reload4重新启动docker
systemctl restart docker5查看 daemon.json 是否已经生效了
tail /etc/docker/daemon.json【5】安装Gitlab
关闭所有防火墙 service firewalld status service firewalld stop 重启dockersystemctl restart docker
1拉取镜像创建容器 直接使用创建命令系统会自动进行拉取
# 添加容器
docker run --detach \--hostname 192.168.19.8 \--publish 443:443 --publish 80:80 \--name gitlab \--restart always \--volume $GITLAB_HOME/config:/etc/gitlab \--volume $GITLAB_HOME/logs:/var/log/gitlab \--volume $GITLAB_HOME/data:/var/opt/gitlab \--shm-size 256m \registry.gitlab.cn/omnibus/gitlab-jh:latestgitlab/gitlab-ce:latest2启动容器
docker start gitlab查看已经存在的容器
docker ps -a3进入容器
docker exec -it gitlab /bin/bash4外网访问测试 首先保证前面关闭防火墙 访问下面连接注意http不加shttp://192.168.19.8/ 要稍微等一会
查看内存使用情况
free -m等内存加载的差不多了就可以打开网页了 5管理员账号密码登录 密码是进入容器后查找的
cat /etc/gitlab/initial_root_password登录名是root密码直接复制过来使用 6修改默认密码 启动 gitlab-rails console要等一会
进入容器
~/files/code/gitlab$ docker exec -it gitlab bash
启动 gitlab-rails consolerootgitlab:/# gitlab-rails console
--------------------------------------------------------------------------------Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]GitLab: 14.7.2 (89599212ee6) FOSSGitLab Shell: 13.22.2PostgreSQL: 12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.4.4)
irb(main):001:0 user User.find(1)#User id:1 root
irb(main):002:0 user.password 111111admin111111admin
irb(main):003:0 user.password_confirmation 111111admin111111admin
irb(main):004:0 user.send_only_admin_changed_your_password_notification!true
irb(main):005:0 user.save!true
irb(main):006:0 exit
rootgitlab:/# exit【三】Gitlab的使用
1Gitlab创建项目
首先创建一个空白的项目
2Idea工具创建本地仓库
在IDEA中创建好项目点击VCS按照下图指示先给项目创建本地Git仓库
3选择此项目根目录作为发布的仓库
4把项目ADD添加到git缓冲区
选择最右侧的 “add”
5再将项目COMMIT提交到本地仓库
选择最右侧第一个 “Commit Directory…” 点击之后在弹窗里填写备注信息
6把项目PUSH推送到远程仓库 URL复制下面这个 连接的时候输入root和对应的密码就行了
这样就可以提交上去了
更新项目的话commit的时候选择你修改的文件push的时候对应的url就是你要更新项目仓库的url。这样gitlab上面仓库里面的项目就是你选择的文件进行修改了。也就是只是局部进行修改。
7查看commit的几次就是看版本 看到以上commit了3次
我们想要回到某一次我们可以右击想要回到的版本 只要点击了以上的这个就回去了
【Checkout Revision】和【Reset Current Branch to Here】的区别
8创建分支
我们想要在当前的项目的基础上面创建一个分支相当于对于当前的项目复制一份变为一个分支
如何查看是不是切换过去了
idea右下角就可以看到当前的项目在哪个分支 也可以直接在右下角进行点击创建
【四】Docker安装Jenkins
【1】安装JDK、Maven、Git可跳过
1安装JDK
参考文章Linux安装JDK 1yum下载JDK
yum search java | grep java-1.8
# 安装JRE
yum install java-1.8.0-openjdk
# 安装JDK
yum install -y java-devel安装完成后默认的安装路径为
cd /usr/lib/jvm/2配置JDK环境变量 1-编辑系统配置文件
vim /etc/profile2-在profile的最后面添加下面的JAVA_HOME是JDK文件夹
JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk
PATH$JAVA_HOME/bin:$PATH
CLASSPATH$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/extexport PATH JAVA_HOME CLASSPATH3-让配置生效
source /etc/profile4-查看jdk是否生效
2安装Maven
1下载maven 下载地址https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
2把下载包上传到服务器的/usr/lib/jvm目录下
cd /usr/lib/jvm
#解压maven
tar -zxvf apache-maven-3.8.8-bin.tar.gz3设置环境变量
vim /etc/profileJAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk
PATH$JAVA_HOME/bin:$PATH
CLASSPATH$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/extexport PATH JAVA_HOME CLASSPATH
export MAVEN_HOME/usr/lib/jvm/apache-maven-3.8.8
export PATH${MAVEN_HOME}/bin:${PATH}让配置生效
source /etc/profile查看mvn的版本测试是否安装成功
mvn -v4配置Maven加速镜像
cd /usr/lib/jvm/apache-maven-3.8.8/conf/vim settings.xml编辑添加下面内容
mirrorsmirroridalimaven/idnamealiyun maven/nameurlhttp://maven.aliyun.com/nexus/content/groups/public//urlmirrorOfcentral/mirrorOf/mirror
/mirrors3安装Git
docker安装的git自带git
【2】安装Jenkins
1拉取镜像
拉取镜像这里指定是2.415版本默认最新的是2.3版本在初始化插件的时候会因为版本低而下载失败
docker pull jenkins/jenkins:2.4152修改目录权限
会把容器中的Jenkins主目录给持久化到主机本地目录里因此需要先在主机上新建一个本地目录并设置权限
需要修改下目录权限因为当映射本地数据卷时/data/jenkins_home/目录的拥有者为root用户而容器中jenkins用户的 uid 为 1000。我们创建一个jenkins目录
# mkdir /var/jenkins_home
# chown -R 1000:1000 /var/jenkins_home/3运行容器
1–name jenkins命名 2-d表示后台运行 3-p 10240:8080把宿主机的10240端口映射到8080端口 4-v /var/jenkins_home:/var/jenkins_home 5-v /etc/localtime:/etc/localtime 6-v /var/run/docker.sock:/var/run/docker.sock让Jenkins能够与主机的Docker进行通讯
如果上面没有安装JDK、Maven、Git这些就不需要进行挂载了后面直接使用docker安装自带的jdk和git还可以自动安装maven
docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:2.415如果已经安装了JDK、Maven、Git这些可以在启动的时候挂载
docker run -di --namemyjenkins -p 10240:8080 -p 10241:50000 -v /var/jenkins_home:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-v /usr/local/java/jdk:/usr/local/jdk1.8 \
-v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5 \
-v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:2.415
-v /home/jenkins_home:/var/jenkins_home是对容器内存储Jenkins的一些配置信息的文件夹 -v /usr/local/java/jdk:/usr/local/jdk1.8是把linux下的jdk和容器内的关联配置Jenkins时使用 -v /usr/local/java/apache-maven-3.8.5:/usr/local/apache-maven-3.8.5是把linux下的maven和容器内的关联配置Jenkins时使用
4浏览器访问Jenkins页面
输入http://192.168.XX.XX:10240 IP是服务器IP地址 端口号是我们刚刚设置的端口号
5获取管理员密码
vim /var/jenkins_home/secrets/initialAdminPassword复制密码然后登录
6安装插件
这里先跳过安装
7创建管理员
root admin
8实例配置
url不用动 配置完成 http://192.168.19.7:10240/
9通过docker安装的jenkins自带git和JDK就不需要再安装了
Jenkins本机默认使用“yum -y install git” 安装的 git
docker exec -it myjenkins /bin/bashgit --versionjava --versionecho $JAVA_HOME10查看Jenkins版本 滑到最底下可以看到当前安装的版本是2.328
【五】Jenkins使用
【1】配置插件镜像 滑到下面找到升级站点 输入https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
点击提交然后重启jenkinshttp://localhost:8080/restart
【2】定制安装所需的插件
因为环境网络问题前面跳过了插件的安装在这一步选择一个简单的jenkins系统所需要的插件。
配置路径Manage Jenkins Manage Plugins 选择所需要插件点击安装Install without restart
有两个重要的插件需要安装publish over ssh和Maven Integration plugin
1安装publish over ssh
我们想把Jenkins打包好的jar包通过SSH发送到远程测试服务器上在远程测试服务上进行启动使用所以需要这个插件安装完插件以后会在system系统配置里进行配置也就是添加远程服务器的连接信息这个后面会讲到 注意这里直接安装可能会失败查看失败的详情信息提示说需要更高版本的Jenkins才可以Jenkins (2.332.1) or higher required所以刚开始直接安装的2.4版本Jenkins
那么我们可以换个更低版本的插件来安装试试插件网址http://updates.jenkins-ci.org/download/plugins/ 查看它前面的版本是否符合要求下载一个hpi文件离线方式安装插件 重启jenkins
2安装Maven Integration
然后还有Maven插件
安装完成后重新启动一下
3安装中文翻译插件
安装Local和Chinese两个插件 点击【Configure System】选项。 找到【Locale】选项输入【zh_CN】,勾选下面的选项最后点击【应用】即可。 4安装Git插件
直接搜Git安装流程如上
【3】开始配置
1配置ssh可跳过在后面用到的时候配
Dashboard——》ManageJenkins——》System
配置全局凭据这个全局凭据看起来高大上其实挺好理解就是一个配置项然后你配置好以后你就可以通过jenkins登录到你想进入的那台服务器里面你还可以在那台服务器上执行你设计的指令。而咱们前面安装的publish over ssh插件就是用来干这事的
1生成ssh私钥和公钥 假设我有两台机器AB然后我想在A机器上远程登录到B机器上那么我就应该在A机器中通过ssh生成公钥和私钥然后把公钥放到B机器中私钥自己留着。
2配置jdk和maven和git
Dashboard——》ManageJenkins——》Tools
1配置JDK
点击系统管理找到全局工具配置
如果是在宿主机里安装的JDK 但是如果使用Docker安装的Jenkins那么是自带JDK的我们可以进入到jenkins容器中 echo $JAVA_HOME 获取java环境安装地址
docker exec -it myjenkins /bin/bashgit --versionjava --versionecho $JAVA_HOME获取Jenkins里的jdk路径是【/opt/java/openjdk】 2配置maven选用默认的即可
进入【首页】–【系统管理】–【全局配置】拉到最下面maven–maven安装
下载jar包会比较慢所以还要配置国内的镜像所以这里也可以用自己安装的maven会更方便使用
3配置git
使用默认的不需要配
点击保存
【4】使用Jenkins部署springboot的helloworld项目最易启动
1准备一个springboot的helloworld项目
1下载地址 https://how2j.cn/k/springboot/springboot-idea/1641.html 2idea打开项目 下载项目文件后解压然后使用idea打开 3启动项目测试访问 因为本地8080端口冲突所以在配置文件里把服务端口改成了8082启动成功以后访问http://localhost:8082/hello 如图测试成功接下来就是把测试成功的项目提交到自己搭建的Gitlab上去了
4Gitlab创建项目 首先创建一个空白的项目
5Idea工具创建本地仓库 在IDEA中创建好项目点击VCS按照下图指示先给项目创建本地Git仓库 然后选择当前项目的文件作为发布的仓库成功之后看到所有项目文件变成了红色
6把项目ADD添加到git缓冲区 点击项目然后右键选择最右侧的 “add”添加之后可以看到所有项目文件变成了绿色 7再将项目COMMIT提交到本地仓库 选择最右侧第一个 “Commit Directory…” 点击之后在弹窗里填写备注信息 提交完成后可以看到项目的所有文件都变成了白色
8把项目PUSH推送到远程仓库 先复制项目在Gitlab的git地址http://192.168.19.8/root/hello-world.git
然后push项目 然后自定义远程地址 然后点击Push连接的时候输入root和对应的密码就行了这样就可以提交上去了
更新项目的话commit的时候选择你修改的文件push的时候对应的url就是你要更新项目仓库的url。这样gitlab上面仓库里面的项目就是你选择的文件进行修改了。也就是只是局部进行修改。
可以看到项目的代码都已经提交上来了
2Jenkins新建任务 3到Gitlab的项目里复制克隆路径 hello world项目http://192.168.19.8/root/hello-world.git
4Jenkins的项目配置
1源码管理 用的是自己搭建服务器上gitlab的代码创建的时候已经设置为public了这里直接用http://192.168.19.8/root/docker-springboot.git
2构建触发器不改动
3构建环境不改动 4Pre Steps不改动 可以执行一些构建之前的操作
5Build构建 在Gitlab里面可以看一下pom.xml是不是放在根目录下的如果还有子目录下面就要填成***/pom.xml
6立即构建
立即构建
因为是第一次构建maven的仓库里没有jar包所以全部都要下载有可能会在下载的过程中就失败所以构建的过程中要观察一下控制台输出
7启动jar包 首先找到构建好的jar包所在位置
cd /var/jenkins_home/workspace/helloworld/target然后使用命令启动项目
java -jar springboot-0.0.1-SNAPSHOT.jar --server.port8088启动成功 查看端口
netstat -tuln | grep 80888访问测试 访问地址192.168.19.9:8088/hello
如果访问不通可能是防火墙的问题关闭所有防火墙 service firewalld status service firewalld stop 成功
【5】将上面的helloworld项目部署到远程测试服务器上
1介绍
上面已经安装了SSH插件就是通过SSH把JAR包发送到测试服务器。这里我们要再克隆一个虚拟机服务器上面只需要安装JDK就行了。
这里想要实现的逻辑就是 1本地idea完成代码修改后把代码提交到192.168.19.8服务器的Gitlab上 2然后192.168.19.9服务器上的Jenkins在构建项目的时候会自动到Gitlab的服务器上拉取代码然后使用Maven对代码进行打包生成Jar包 3最后192.168.19.9服务器上的Jenkins在打包完成后把Jar包通过SSH发送到远程测试服务器192.168.19.11上并且会执行自定义的命令比如java -jar完成项目启动
综上开发人员只需要在idea把代码提交到Gitlab然后进入Jenkins点一下构建项目然后就可以在测试服务器上使用部署好的代码了
2修改全局配置 目前是一台服务器都没有的点击新增 1-Name自己给服务器起个名字 2-HostName服务器的ip地址 3-Username登录用户名 4-点击高级Passwor的登录密码 5-port端口默认22 最后点击Test Configuration测试连接显示Success为连接成功
3打开项目配置 上面知道Jenkins打成的Jar包是放在workspace文件夹下的target包里的【springboot-0.0.1-SNAPSHOT.jar】每次打包的时候后缀【-0.0.1】可能会变
cd /var/jenkins_home/workspace/helloworld/target配置如下点击保存
4远程服务器开启SSH
1首先查看ssh服务没有开启
查看状态#lssrc -s sshd
如果状态为inoperative说明没有开启
开启sshd#startsrc -s sshd
2修改配置文件
root用户默认情况下是无法使用ssh连接的。
编辑#vi /etc/ssh/sshd_config去掉前面的#并将PermitRootLogin改为yes #Port 22 #PermitRootLogin yes
3启动sshd服务
启动ssh#startsrc -s sshd
5再次构建查看构建日志
显示传送了一个文件
6到远程服务器上看看
看看文件是不是真的传送了
7看看jar是否已经自动启动
访问地址192.168.19.11:8082/hello因为这次启动没有指定启动端口而项目yml里配置的端口是8082
如果访问不通可能是防火墙的问题关闭所有防火墙 service firewalld status service firewalld stop
查看端口
netstat -tuln | grep 8088【6】准备一个Docker启动的CRUD项目
1远程测试服务器搭建运行环境
1安装Docker
看上面
2Docker安装Portainer
1拉取最新的Portainer镜像
docker pull portainer/portainer2运行镜像9000
docker run -d -p 9000:9000 -v /root/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name dev-portainer portainer/portainer或者
docker run -d --restartalways --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer参数说明 -d #容器在后台运行 -p 9000:9000 # 宿主机9000端口映射容器中的9000端口 -v /var/run/docker.sock:/var/run/docker.sock # 把宿主机的Docker守护进程(docker daemon)默认监听的Unix域套接字挂载到容器中 -v /root/portainer:/data # 把宿主机目录 /root/portainer 挂载到容器 /data 目录 –name dev-portainer # 指定运行容器的名称 注意在启动容器时必须挂载本地 /var/run/docker.socker与容器内的/var/run/docker.socker连接。
3访问Portainer可视化界面 1-浏览器中输入服务器的ip地址:9000访问portainer可视化界面 第一次会弹出安装界面配置账号密码、选择是本地Docker还是远程Docker一般我们选择本地Docker也就是local可以查看宿主机配置信息、查看容器、镜像、网络、卷等相关信息。 2-创建登录账号和密码
3Docker安装Mysql
1拉取镜像docker pull mysql:5.7 2查看本地镜像docker images 3创建一个mysql容器首先在根目录下创建好一个文件夹allenuse
4运行容器docker run -d -p 3306:3306 --privilegedtrue -v /allenuse/mysql/log:/var/log/mysql -v /allenuse/mysql/data:/var/lib/mysql -v /allenuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD123456 --name mysql5 mysql:5.7
如果报错的话可能是端口3306被占用了就用下面的命令解决 1-先查看当前占用端口netstat -tanlp 2-杀死对应的进程kill 1330 5查看是否创建成功 1-查看容器docker ps 或者 docker ps -a 2-查看启动日志docker logs mysql5
6新建my.cnf通过容器卷同步给mysql容器实例解决中文乱码问题
cd /allenuse/mysql/conf/vi my.cnf[client]
default_character_setutf8
[mysqld]
collation_server utf8_general_ci
character_set_server utf87重启mysql容器实例再重新进入并查看字符编码 1-重启docker restart mysql5 2-查看字符编码docker exec -it mysql5 /bin/bash
8新建库新建表再插入中文测试
9如果不小心把mysql的容器删除了如何恢复 之前已经配置了容器卷mysql的数据已经在本地存储了只需要重新执行创建容器的命令就行了
docker run -d -p 3306:3306 --privilegedtrue -v /allenuse/mysql/log:/var/log/mysql -v /allenuse/mysql/data:/var/lib/mysql -v /allenuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD123456 --name mysql5 mysql:5.710防火墙设置 1-设置mysql 3306 端口firewall-cmd --zonepublic --add-port3306/tcp --permanent 2-重新加载firewall-cmd --reload
11本地连接 12如果3306端口被占用了怎么处理 1-先查看当前占用端口netstat -tanlp 2-杀死对应的进程kill 1330
13初始化数据库脚本
create database tmall_springboot;
use tmall_springboot;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS 0;
-- ----------------------------
-- Table structure for category
-- ----------------------------
DROP TABLE IF EXISTS category;
CREATE TABLE category (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT84 DEFAULT CHARSETutf8;-- ----------------------------
-- Records of category
-- ----------------------------
BEGIN;
INSERT INTO category VALUES (60, 安全座椅);
INSERT INTO category VALUES (64, 太阳镜);
INSERT INTO category VALUES (68, 品牌女装);
INSERT INTO category VALUES (69, 时尚男鞋);
INSERT INTO category VALUES (71, 男士西服);
INSERT INTO category VALUES (72, 男士手拿包 );
INSERT INTO category VALUES (73, 男表);
INSERT INTO category VALUES (74, 女表);
INSERT INTO category VALUES (75, 空调);
INSERT INTO category VALUES (76, 冰箱);
INSERT INTO category VALUES (77, 原汁机);
INSERT INTO category VALUES (78, 扫地机器人 );
INSERT INTO category VALUES (79, 平衡车);
INSERT INTO category VALUES (80, 电热水器);
INSERT INTO category VALUES (81, 沙发);
INSERT INTO category VALUES (82, 马桶);
INSERT INTO category VALUES (83, 平板电视);
COMMIT;
4Docker安装JDK
1查找JDK
docker search jdk2拉取JDK1.8镜像 从上面列表里选取一个拉取
docker pull java3查看下载的镜像
docker images4启动JDK镜像
docker run -di --namejdk8 java5查看镜像运行情况
docker ps6进入镜像
docker exec -it jdk8 /bin/bash查看jdk版本 退出镜像
exit7镜像的运维 停止镜像docker stop jdk8 启动镜像docker start jdk8 重启镜像docker restart jdk8 删除容器
# 1.查看历史所有容器
docker ps -a
# 2.删除容器
docker rm 容器id2创建一个springboot项目
项目创建后完成以下准备工作 1idea连接数据库 首先启动mysql容器
docker start mysql5然后idea连接mysql跟上面Navicat连接的过程类似 2添加相关的依赖 确认一下springboot版本为2.5.2
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope
/dependency
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.49/version
/dependency
dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.19/version
/dependency
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.3/version
/dependency
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversionRELEASE/versionscopecompile/scope
/dependency
!--domain.page--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId
/dependency3编写yml配置文件
server:port: 8989servlet:context-path: /docker_springboot
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/tmall_springboot?characterEncodingUTF-8useSSLfalseusername: rootpassword: 123456
mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.allen.docker_springboot.entity4下载自动生成代码的插件easycode 5使用插件自动生成增删改查的代码
6查看代码的生成结果 修改启动类加上扫描路径
7启动项目测试接口 访问地址http://localhost:8989/docker_springboot/category/64
3docker创建网络
docker network create apps然后查看容器
docker ps然后把mysql加到网络中去
docker network connect apps e3最后查看一下网络
docker inspect apps4把项目打成jar包
打成jar包之前要把yml配置文件里的mysql的ip地址端口号密码等信息都换成服务器的不能直接用localhost。
我们可以直接把ip改成对应服务器的ip来替换localhost还有另外一种方式因为上面已经设置了网络名称为mysql5所以我们可以直接用mysql5
然后开始打包 5创建Dockerfile文件并上传jar包
创建专门用来放dockerfile和jar的文件夹
mkdir -p /root/docker/docker_springboot进入创建的专门放置docker文件的文件夹/docker然后创建一个专属该项目的文件夹/docker_springboot进入然后vi Dockerfile创建Dockerfile文件编辑输入以下内容
cd /root/docker/docker_springboot
vi DockerfileFROM java:8
ENV APP_PATH/docker/docker_springboot
WORKDIR $APP_PATH
ADD ./docker_springboot-0.0.1-SNAPSHOT.jar $APP_PATH/app.jar
EXPOSE 8989
ENTRYPOINT [java,-jar]
CMD [app.jar,-Dfile.encodingGBK, --server.port8989]最后再把jar包传到这个文件夹里
6用dockerfile构建镜像
进入存放Dockerfile的目录下面
cd /root/docker/docker_springboot#docker build –f dockerfile文件路径 –t 镜像名称:版本 .
docker build -t apps:1.0 .构建完毕 查看镜像可以看到下面已经有镜像了
docker images7使用镜像创建容器
暴露的端口号是8989
#这里可以使用【镜像id】也可以使用名称版本号【apps:1.0】
docker run -d -p 8989:8989 --name apps apps:1.0这一步我们可以使用–network直接加入网络也可以在后面再加入先使用上面的创建命令 docker run -d -p 8989:8989 --name apps --network apps apps:1.0 下面开始加入网络
docker network connect apps 容器id查看网络
docker inspect apps查看运行的容器
docker ps通过【docker logs 容器ID】来查看springboot的日志看看是不是真的启动成功了
如果有报错要删除容器和镜像然后需要重新打包执行
docker ps
停止运行的容器docker stop 容器id
删除容器docker rm 容器id
docker images
删除镜像docker rmi -f 镜像id或者可以使用下面这个命令启动不用后台启动了可以直接查看启动日志
#docker run -p 8989:8989 镜像ID
docker run -p 8989:8989 镜像ID看到下面的日志说明启动成功了
8本地测试
关闭所有防火墙 service firewalld status service firewalld stop
然后访问地址http://192.168.19.7:8989/docker_springboot/category/64
【7】使用Jenkins部署上面的Docker项目
上面的案例我们想把项目打包发送到服务器部署需要在本地idea里手动的package然后把jar包发送到服务器里然后手动构建Dockerfile文件进行启动。而现在我们要实现的是改完代码以后只需要点一下commit and push把代码提交到git然后进入jenkins点一下构建就可以了。Jenkins会自动去Gitlab拉取最新的代码然后打成Jar包然后把Jar包发送到服务器上最后执行启动。太省事了。
1把项目发送到git
2Jenkins创建项目Jenkins配置git自动拉取代码 3Jenkins会把jar包发送到测试服务器
1在项目文件里加上Dockerfile
要包含Dockerfile文件在springboot项目根目录新建一个名为Dockerfile的文件注意没有后缀名其内容如下:大致就是使用jdk8把jar包添加到docker然后运行prd配置文件
FROM java:8
ENV APP_PATH/docker/docker_springboot
WORKDIR $APP_PATH
ADD ./docker_springboot-0.0.1-SNAPSHOT.jar $APP_PATH/app.jar
EXPOSE 8989
ENTRYPOINT [java,-jar]
CMD [app.jar,-Dfile.encodingGBK, --server.port8989]Dockerfile文件和pom同级
2上传到git
看上面【三】Gitlab的使用
3修改全局配置在上面helloworld项目已经配置过了 目前是一台服务器都没有的点击新增 1-Name自己给服务器起个名字 2-HostName服务器的ip地址 3-Username登录用户名 4-点击高级Passwor的登录密码 5-port端口默认22 最后点击Test Configuration测试连接显示Success为连接成功
4Jenkins创建新项目 5修改jenkins里docker_springboot项目的配置 再往下就是配置就是构建后的操作这里使用shell命令以前非docker部署的项目直接把jar包生成并SSH发送再执行一个java -jar命令就行了。现在是docker部署的项目了需要把jar和Dockerfile都复制过去并且停止删除以前的旧容器使用新的dockerfile构建新的容器命令很多所以使用shell命令来执行 有了之前手动部署docker项目的案例下面的参数就可以按照上面的案例来了完整的shell命令如下
#!/bin/bash
# 服务名称
SERVER_NAMEjenkins# 源jar名称mvn打包之后target目录下的jar包名称
JAR_NAMEdocker_springboot-0.0.1-SNAPSHOT# jar包的目录
JENKINS_HOME/var/jenkins_home/workspace/docker_springboot# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1echo 结束进程完成cd $JENKINS_HOME/targetcp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target# 修改文件权限
chmod 755 $JAR_NAME.jarecho 看看docker能不能用
docker -vecho 停止容器
# 停止容器
docker stop appsecho 删除容器
# 删除容器
docker rm apps
echo 删除镜像
# 删除镜像
docker rmi apps
echo 打包镜像
# 打包镜像
docker build -t apps:1.0 .
echo 运行镜像
# 运行镜像
docker run -d -p 8989:8989 --name apps apps:1.0点击保存
5立即构建 因为是第一次构建maven的仓库里没有jar包所以全部都要下载有可能会在下载的过程中就失败所以构建的过程中要观察一下控制台输出
6控制台输出报错
我们看到打包成功了就是在使用docker命令的时候出现权限问题这是我们要给docker.sock权限就可以解决了
报错信息
Got permission denied while trying to connect to the Docker daemon socket atunix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/springboot/stop: dial unix /var/run/docker.sock: connect: permission denied解决方案
chmod arw /var/run/docker.sock7再次构建
我们发现没有报错也看到了容器的id
8查看Docker镜像是否启动
docker images
docker ps9本地接口访问测试