昊方项目持续部署文档

部署方式

部署架构

使用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的远程执行

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×