部署方式

使用docker简化原有的宿主机手动安装jdk,tomcat,mysql的部署。
项目使用Jenkins来持续部署,提供了docker直接部署和docker-compose来管理docker部署两种方式
默认使用docker-compose来部署,若想直接使用docker来部署,请将Jenkinsfile与Jenkinsfile2替换后push后生效
下方生成文件列表都是经过package生成的文件由maven根据pom文件来对占位符填充生成。请先行理解maven的copy-resources
,该maven文件位于haofang-service
下
docker直接部署涉及到的生成文件
- buil.sh
- hfserver.sh
- mysql.sh
- Dockerfile
compose部署涉及到的生成文件
- docker-compose.yml
- Dockerfile
一、离线安装docker
自己选择版本下载docker,项目中使用的是19.03.8.tgz
#解压
tar -xvf docker-版本号-ce.tgz
#拷贝到bin目录
cp docker/* /usr/bin/
#注册service,写入以下内容
vim /etc/systemd/system/docker.service
[unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker
systemctl daemon-reload #重载unit配置文件
systemctl start docker #启动Docker
systemctl enable docker.service #开机自启
#验证安装情况
systemctl status docker #查看Docker状态
docker -v #查看Docker版本
二、提前pull所需docker镜像
设置docker国内源
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
项目所需的镜像列表
- docker pull mysql:8.0.21
- docker pull tomcat:jdk8
- docker pull classmethod/openjdk-alpine-git
正常启动指令,本文档下方有介绍docker-compose部署,也是基于理解这些指令基础上实施。请自行理解
#昊方docker-mysql
docker run -d -v /var/docker-mysql:/var/lib/mysql -p 13307:3306 -e MYSQL_ROOT_PASSWORD=951753 --network haofang-server --name haofang-mysql mysql:8.0.21
#昊方前端docker
docker run -it --rm -v /var/haofangproject/haofangUI/:/usr/local/tomcat/webapps/ROOT -p 8080:8080 --name haofang-UI tomcat:jdk8
#昊方后端docker
docker build -t haofang-service-image
docker run --rm -it -d -p 8082:8082 -v /var/haofangproject/haofangServer/log:/log --network haofang-server --name haofang-service-app haofang-service-image
三、离线安装docker-compose
自己选择版本下载compose,项目使用的是docker-compose-Linux-x86_64-1.27.1
#非离线安装可以在服务器中执行该命令
sudo curl -L https://github.com/docker/compose/releases/download/1.27.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#移动到bin目录下
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
#执行权限
sudo chmod +x /usr/local/bin/docker-compose /usr/local/bin/docker-compose
#运行查询版本情况
docker-compose --version
四、基于docker的jenkins安装与运行
docker pull jenkinsci/blueocean
docker run \
--rm -itd --tty \
-u root \
-p 18080:8080 \
-v /var/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \ #docker in docker
-v /usr/bin/docker:/usr/bin/docker \
-v /usr/lib64/libltdl.so.7:/lib64/libltdl.so.7 \
-v /home/jenkins_homes:/home \ #jenkins插件等资源路径
-v /root/.ssh:/root/.ssh \
--name jenkins-tutorials \
jenkinsci/blueocean
启动后基于映射的路径,在jenkins home目录下找到/var/jenkins_home/secrets/var/jenkins_home/secrets/initialAdminPassword
找到jenkins登录的初始密码,登录后下载社区推荐插件即可。
初始化慢的时候,可以直接浏览器打开新页面后输出地址jenkins地址/pluginManager/advanced
去修改位于最底下的url为https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
因为有使用到gitee的webhooks去触发jenkins的构建。所以也要安装gitee的插件系统管理->插件管理->搜索gitee下载重启jenkins
关于jenkins中怎么配置gitee的webhooks,请查看关于gitee的Jenkins插件
五、ssh-copy-id
执行对网络服务器
的构建免密登录ssh-copy-id root@xx.xx.xx
,方便scp与ssh的远程执行