热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

项目管理二:gogs+Jenkins+docker+harbor项目部署

文章目录项目管理二:gogsJenkinsdockerharbor项目部署基础环境搭建搭建git和git私服环境搭建git搭建git私服gogs搭建docker私服h

文章目录

  • 项目管理二:gogs+Jenkins+docker+harbor 项目部署
    • 基础环境搭建
    • 搭建git 和git私服环境
      • 搭建git
      • 搭建git私服 gogs
    • 搭建docker私服 harbor
    • 搭建Jenkins
    • 通过jenkins部署微服务项目
      • jenkins 整体部署微服务
      • jenkins 单独部署某个微服务


项目管理二:gogs+Jenkins+docker+harbor 项目部署

基础环境搭建

根据项目管理一 搭建好jdk、maven、docker、dockercompose、jenkins。

防火墙记得关闭 或者开放对应端口

搭建git 和git私服环境


搭建git

卸载centos自带的git: yum remove git
下载git:wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.0.tar.gz --no-check-certificate
如果出现:-bash: wget: command not found 先安装wget yum install wget -y
在这里插入图片描述
安装完成后当前目录下会出现对应tar文件

安装git需要的环境:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel autoconf gcc
创建git文件夹并把git安装包放到git文件夹中:mkdir git ; mv git-2.24.0.tar.gz git/
安装:

  1. git 目录下 执行make configure 出现 GEN configure 表示成功
  2. ./configure --prefix=/usr/local/git 这里的/usr/local/git是你希望将git安装到的目标目录
  3. 使用配置文件编译 make profix=/usr/local/git
  4. 编译无误执行make prefix=/usr/local/git install
  5. 添加环境变量 vim /etc/profile 添加

export GIT_HOME=/usr/local/git
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$GIT_HOME/bin:$PATH

  1. 执行 source /etc/profile
  2. 执行 git --version 出现git版本表示成功

搭建git私服 gogs

简介:Gogs 是⼀款开源的轻量级Git web服务,其特点是简单易⽤完档⻬全、国际化做的相当不 错。其主要功能如下:

  1. 提供Http 与ssh 两种协议访问源码服务
  2. 提供可WEB界⾯可查看修改源码代码
  3. 提供较完善的权限管理功能、其中包括组织、团队、个⼈等仓库权限
  4. 提供简单的项⽬viki功能
  5. 提供⼯单管理与⾥程碑管理。

官⽹:https://gogs.io
下载:https://gogs.io/docs/installation 选择 linx amd64 下载安装
解压 tar -zvxf gogs_0.12.3_linux_amd64.tar.gz
在这里插入图片描述
在scripts 下有对应的sql 文件 Gogs 支持mysql存储
在这里插入图片描述
如果不用mysql存储的话跳过 如果用MySQL存储的话 先执行mysql.sql文件

运行gogs进行初始化配置 ./gogs web 默认端口3000
在这里插入图片描述
访问:ip:3000
配置数据库
在这里插入图片描述
基础配置
在这里插入图片描述
可选配置:
在这里插入图片描述
可以不用管 默认第一个账号就是管理员账号
安装完成后gogs目录下会多出custom/conf/app.ini 这个配置文件关系到gogs的配置

## 基础信息
BRAND_NAME = Gogs
RUN_USER = root
RUN_MODE = prod[database] ## 数据库的配置
TYPE = mysql
HOST = ip:3306
NAME = gogs
USER = root
PASSWORD = xxx
SSL_MODE = disable
PATH = /root/gogs/data/gogs.db[repository]
ROOT = /root/gogs-repositories
[server] ##服务的配置
DOMAIN = ip # 自己的ip
HTTP_PORT = 3000
EXTERNAL_URL = http://ip:3000/
DISABLE_SSH = false
SSH_PORT = 3001 # 设置ssh端口 默认22 防止冲突 改为其他的
START_SSH_SERVER = true # 开启ssh服务
OFFLINE_MODE = false[mailer] # 邮件配置
ENABLED = true #开启邮箱服务 邮箱需要开启smtp服务 这个自己百度qq邮箱如何开启smtp服务
HOST = smtp.qq.com:465 # 固定的
FROM = 522043032@qq.com # 发送人的邮箱
USER = 522043032@qq.com # 接收人的邮箱 这两个可以设置同一个
PASSWORD = xxx # 授权码[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false

安装好后 创建仓库 初始化项目 配置ssh密钥 和github一样。具体gogs的使用查看官网 很简单
在这里插入图片描述
工程创建完成就是这个样子。要注意的是如果创建了组织 要注意权限的问题 不同的团队 里面的成员的权限是不一样。如果没有写的权限那么推送代码就是失败。
gogs重要的日志在
gogs/log
gogs/log/hooks/serv.log

搭建docker私服 harbor

修改docker 配置vim /etc/docker/daemon.json

{"registry-mirrors": ["https://3dse7md.mirror.aliyuncs.com"],"insecure-registries":["192.168.2.111:17000"] #这个地址对应harbor的地址和端口
}

重启docker systemctl daemon-reload && systemctl restart docker
创建对应的文件目录:mkdir harbor
进入目录 cd harbor
下载harbor :wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.4.tgz
解压:tar -zxvf harbor-offline-installer-v1.9.4.tgz
在这里插入图片描述
修改harbor.yml配置

hostname: 192.168.2.111
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 17000

配置好这两个就可以了 其他的根据自己需求配置
初始化安装:/install.sh
如果出现:'str' object has no attribute 'get' 这个错误 看看是不是 yml的配置不对 例如 冒号后面少了空格
成功出现
在这里插入图片描述
在这里插入图片描述
访问http://192.168.2.111:17000
在这里插入图片描述
密码:Harbor12345

测试推送镜像
在docker 上登录 私服

$ docker login 192.168.2.111:17000
Username: admin
Password:
Login Succeeded

查看现有的镜像:docker images
在这里插入图片描述
随便找一个镜像 比如找个nginx,通过tag 重新打标签 docker tag goharbor/nginx-photon:v1.9.4 192.168.2.111:17000/library/nginx:test
新的标签名必须带有私有仓库的地址信息 例:192.168.2.111:17000/library/nginx:test
私服的地址和端口/私服的项目名/镜像名称:版本号

推送镜像docker push 192.168.2.111:17000/library/nginx:test
在这里插入图片描述
在这里插入图片描述
成功

在maven的settings文件中配置相关信息

<pluginGroups><pluginGroups><pluginGroup>com.spotify</pluginGroup> </pluginGroups></pluginGroups>
<server><id>仓库ip:端口</id><username>用户名</username><password>密码</password><configuration><email>邮箱</email></configuration></server>

最好是在harbor创建新的用户&#xff0c;然后在项目中把该用户添加进去
在父项目的pom文件加上

<build>
<finalName>${project.name}</finalName><pluginManagement><plugins><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>${docker.plugin.version}</version><configuration>//父工程提前配置好这些信息在 <username>${docker.username}</username><password>${docker.password}</password><repository>${docker.registry.url}:17000/${docker.namespace}/${project.artifactId}</repository><tag>${project.version}</tag><useMavenSettingsForAuth>true</useMavenSettingsForAuth><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration><!--子服务添加如下配置&#xff0c;运行 mvn deploy 命令便会自动打包镜像--><!--<executions><execution><id>default</id><goals><goal>build</goal><goal>push</goal></goals></execution></executions>--></plugin></plugins></pluginManagement>
</build>

在需要构建镜像的子工程中的pom加上

<build><plugins><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><configuration><username>${docker.username}</username><password>${docker.password}</password><repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository><tag>${project.version}</tag><useMavenSettingsForAuth>true</useMavenSettingsForAuth><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs><skip>false</skip></configuration></plugin></plugins>
</build>

如果想在开发环境就把镜像构建和推送那么可以考虑在服务器开放2375端口&#xff0c;不过不推荐这样做。然后执行
mvn clean install dockerfile:build dockerfile:push

搭建Jenkins

根据项目管理一 搭建jenkins基础配置
需要安装的插件有&#xff1a;
Maven Integration、Deploy to container、Git plugin(可能自动安装)、Publish Over SSH、SSH
环境配置&#xff1a;
maven&#xff1a;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置ssh远程连接&#xff1a;
在这里插入图片描述
在这里插入图片描述
配置ssh公私钥
jenkins服务器中生成公私钥 &#xff1a;ssh-keygen -t rsa 一路回车
在这里插入图片描述
成功
查看公钥并配置到gogs中 cat /root/.ssh/id_rsa.pub
在这里插入图片描述
配置私钥到jenkins中
查看私钥&#xff1a;cat /root/.ssh/id_rsa
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过jenkins部署微服务项目


jenkins 整体部署微服务

本次项目部署流程通过提交代码到gogs&#xff0c;jenkins从gogs中拉取代码构建jar&#xff0c;通过dockerfile文件构建镜像&#xff0c;然后推送到harbor&#xff0c;最后执行docker-compose.yml文件完成项目启动
本次案例项目结构&#xff1a;
在这里插入图片描述
启动common是公用模块&#xff0c;auth是认证模块是一个微服务&#xff0c;ops是运维模块&#xff0c;包含有很多微服务。下面以auth为例&#xff0c;其他微服务同样。
项目基本配置
在父工程的pom文件和其他微服务的pom文件中需要添加对应插件依赖&#xff0c;这部分在搭建harbor那一块有说到。
在需要构建成镜像的微服务中编写Dockerfile文件(名称不能搞错)&#xff0c;该文件和pom文件同级目录
然后编写好启动所有微服务的docker-compose.yml 文件。
至于这两个文件怎么编写&#xff0c;比较简单&#xff0c;自行百度。后续在写docker方面的博客在补充
jenkins构建项目
在这里插入图片描述
在这里插入图片描述
然后到这个界面
在这里插入图片描述
在这里插入图片描述
在Pre step下配置构建前需要执行的shell命令
在这里插入图片描述
在这里插入图片描述

#定义环境变量
HARBOR_IP&#61;&#39;harbor的ip&#39;
HARBOR_USER&#61;&#39;用户名&#39;
HARBOR_USER_PASSWD&#61;&#39;密码&#39;
#登录到harbor 用于推送
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}:17000
#切换到docker-compose.yml的目录
cd /usr/local/springcloud/baseproject
#停止和删除旧的服务、容器、镜像
docker-compose down --rmi all

构建项目&#xff1a;
在这里插入图片描述
这里是没有推送的&#xff0c;因为推送慢&#xff0c;所以就没有推送&#xff0c;如果想推送执行使用下面的命令
mvn clean install -Dmaven.test.skip&#61;true dockerfile:build dockerfile:push
项目构建成功执行shell启动服务
在这里插入图片描述
让然后看看执行的日志&#xff1a;
执行构建前的shell
在这里插入图片描述
开始构建项目、打包镜像、成功
在这里插入图片描述
构建成功执行shell启动
在这里插入图片描述
所有步骤完成&#xff1a;
在这里插入图片描述

项目界面&#xff1a;
在这里插入图片描述
这是整体项目的构架&#xff0c;每次构建都是所有微服务整体打包&#xff0c;这显然不是我们想要的&#xff0c;如果想要单独某个微服务打包&#xff0c;用下面的方法&#xff0c;以auth为例&#xff0c;其他微服务同样。

jenkins 单独部署某个微服务

还是新建任务
在这里插入图片描述
在这里插入图片描述
源码管理的配置不变&#xff0c;还是整体项目的git连接
在这里插入图片描述
配置Pre Steps
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
配置构建&#xff1a;
在这里插入图片描述
构建完成后
在这里插入图片描述
docker-compose.yml 还之前整体项目的配置文件&#xff0c; 只不过执行的时候指定了启动某个微服务
配置完成后点击在这里插入图片描述
在这里插入图片描述
查看日志 &#xff0c;有报错解决报错报错。
其他微服务也是这么配置&#xff0c;把相关路径改改&#xff0c;启动的项目名改改&#xff0c;其他配置基本不用改。
到此整个项目部署完成。


推荐阅读
author-avatar
My_Qzj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有