根据项目管理一 搭建好jdk、maven、docker、dockercompose、jenkins。
防火墙记得关闭 或者开放对应端口
卸载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文件
yum remove git
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.0.tar.gz --no-check-certificate
yum install wget -y
安装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/ 安装:
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel autoconf gcc
mkdir git ; mv git-2.24.0.tar.gz git/
export GIT_HOME=/usr/local/gitexport PATH=$JAVA_HOME/bin:$M2_HOME/bin:$GIT_HOME/bin:$PATH
简介:Gogs 是⼀款开源的轻量级Git web服务,其特点是简单易⽤完档⻬全、国际化做的相当不 错。其主要功能如下:
官⽹: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文件
tar -zvxf gogs_0.12.3_linux_amd64.tar.gz
运行gogs进行初始化配置 ./gogs web 默认端口3000 访问:ip:3000 配置数据库 基础配置 可选配置: 可以不用管 默认第一个账号就是管理员账号 安装完成后gogs目录下会多出custom/conf/app.ini 这个配置文件关系到gogs的配置
./gogs web
## 基础信息BRAND_NAME = GogsRUN_USER = rootRUN_MODE = prod[database] ## 数据库的配置TYPE = mysqlHOST = ip:3306NAME = gogsUSER = rootPASSWORD = xxxSSL_MODE = disablePATH = /root/gogs/data/gogs.db[repository]ROOT = /root/gogs-repositories[server] ##服务的配置DOMAIN = ip # 自己的ipHTTP_PORT = 3000EXTERNAL_URL = http://ip:3000/DISABLE_SSH = falseSSH_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 = falseENABLE_NOTIFY_MAIL = falseDISABLE_REGISTRATION = falseENABLE_CAPTCHA = trueREQUIRE_SIGNIN_VIEW = false
安装好后 创建仓库 初始化项目 配置ssh密钥 和github一样。具体gogs的使用查看官网 很简单 工程创建完成就是这个样子。要注意的是如果创建了组织 要注意权限的问题 不同的团队 里面的成员的权限是不一样。如果没有写的权限那么推送代码就是失败。 gogs重要的日志在 gogs/log gogs/log/hooks/serv.log
修改docker 配置vim /etc/docker/daemon.json
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配置
systemctl daemon-reload && systemctl restart docker
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
hostname: 192.168.2.111http:# 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
如果出现:'str' object has no attribute 'get' 这个错误 看看是不是 yml的配置不对 例如 冒号后面少了空格
测试推送镜像 在docker 上登录 私服
$ docker login 192.168.2.111:17000Username: adminPassword: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 tag goharbor/nginx-photon:v1.9.4 192.168.2.111:17000/library/nginx:test
推送镜像docker push 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
mvn clean install dockerfile:build dockerfile:push
根据项目管理一 搭建jenkins基础配置 需要安装的插件有&#xff1a; Maven Integration、Deploy to container、Git plugin(可能自动安装)、Publish Over SSH、SSH 环境配置&#xff1a; 配置ssh远程连接&#xff1a; 配置ssh公私钥 jenkins服务器中生成公私钥 &#xff1a;ssh-keygen -t rsa 一路回车 成功 查看公钥并配置到gogs中 cat /root/.ssh/id_rsa.pub 配置私钥到jenkins中 查看私钥&#xff1a;cat /root/.ssh/id_rsa
ssh-keygen -t rsa
cat /root/.ssh/id_rsa.pub
cat /root/.ssh/id_rsa
本次项目部署流程通过提交代码到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;
mvn clean install -Dmaven.test.skip&#61;true dockerfile:build dockerfile:push
项目界面&#xff1a; 这是整体项目的构架&#xff0c;每次构建都是所有微服务整体打包&#xff0c;这显然不是我们想要的&#xff0c;如果想要单独某个微服务打包&#xff0c;用下面的方法&#xff0c;以auth为例&#xff0c;其他微服务同样。
还是新建任务 源码管理的配置不变&#xff0c;还是整体项目的git连接 配置Pre Steps
配置构建&#xff1a; 构建完成后 docker-compose.yml 还之前整体项目的配置文件&#xff0c; 只不过执行的时候指定了启动某个微服务 配置完成后点击 查看日志 &#xff0c;有报错解决报错报错。 其他微服务也是这么配置&#xff0c;把相关路径改改&#xff0c;启动的项目名改改&#xff0c;其他配置基本不用改。 到此整个项目部署完成。