2021-09-07
Posted 爱作死的章鱼哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-09-07相关的知识,希望对你有一定的参考价值。
gitlab+gitlab-runner+docker+Harbor 自动部署
最近看网上看了好久视频和帖子有的不太详细有的太长只想着的能不能找速成的但是都没有最后只有自己慢慢学习了,废话不多说直接来实际的,有条件的可以用服务
我这里用了三台服务器
第一台 2核4g 部署 gitlab
第二台 2核4g 部署 gitlab-runner 加项目部署
第二台 2核4g 部署 Harbor 私有仓库管理自己的镜像 没条件的可以不搭建私有仓库
其实我有四台 2核4g的 一共加起来 500块是一共五百块 都是一年
废话不多说开始教程
安装gitlab
linux安装gitlab
docker安装gitlab
上面都不行自行百度
2再另外一台服务器安装gitlab-runner
第一步先安装docker
1、yum 包更新到最新
yum update
2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
5、 查看docker版本,验证是否验证成功
docker -v
如果感觉安装慢的话
ctrl+c停止安装
修改yum源
启动docker
sudo systemctl start docker
拉取 gitlab-runner 镜像
docker pull gitlab/gitlab-runner
拉去的慢的话
vim /etc/docker/daemon.json
此处使用的是中国科技大学的docker镜像源
{
“registry-mirrors” : [“https://docker.mirrors.ustc.edu.cn”]
}
重新启动
service docker restart
启动 gitlab-runner
docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest
gitlab-runner register 注册
进入docker 容器内部
docker exec -it 容器id /bin/bash
新建 config.toml 文件
touch /etc/gitlab-runner/config.toml
注册脚本,替换对应的参数的值,比如url和token等
docker run -it --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \\
--non-interactive \\
--executor "docker" \\
--docker-privileged \\
--docker-image docker:latest \\
--url "https://gitlab.com/" \\
--registration-token "2xAmgi-WmzWh9evSHgrx" \\
--description "package-runner" \\
--tag-list "maven,build,deploy" \\
--run-untagged="true" \\
--locked="false" \\
--access-level="not_protected";
有几个比较重要的说一下
修改Runner配置文件
vim /srv/gitlab-runner/config/config.toml
找到volumes配置,修改为如下,分别是挂载了宿主机的docker和配置Maven的缓存,提高效率
volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock","/data/.m2/:/.m2/"]
在volumes配置下方增加一行配置,防止Runner重复拉取镜像
pull_policy = "if-not-present"
第三步两个打码得就是url 和token 准确来说gitlab跟gitlab-runner就是服务端和客户端,gitlab-runner可以多个绑定一个gitlab
我最最低下得就是tag-list "maven,build,deploy"创建标签可以创建多个,号隔开
他的看了好的博主说可以随便写但是没说作用就是很重要写脚本得时候也没介绍
图片我定义了三个,登到脚本就在仔细介绍这里说不清
这里结束了暂时
搭建私仓往后推打开idea 在项目的根目录创建两个文件
首先创建
先拉取openjdk:8-jdk
docker pull openjdk:8-jdk
利用Dockerfile帮我们创建镜像
FROM openjdk:8-jdk
COPY target/*.jar app.jar
EXPOSE 8087
ENTRYPOINT ["java","-jar","app.jar"]
EXPOSE:暴露的端口号
FROM:指定父镜像
第二步创建
.gitlab-ci.yml
# 因为我们Runner执行器设置为docker, 所以这里需要指定docker的版本
image: docker:stable
#这里定义里项目的名称主要是因为常用
variables:
IMAGE_NAME: hello_netty
stages:
#这里可以说算是三任务和执行的顺序可以自定义
- package
- build
- deploy
# package对应上面的三个自定义的任务 打包
package:
stage: package
# 打包用到了maven, 所有需要拉取maven镜像, 这是我自己构建的阿里云maven私服的maven镜像
image: maven
tags: #这里就到刚才要说的的地方了还记得我们启动gitlab-runner tag-list "maven,build,deploy"maven就是对应的
- maven
script:
- echo "=============== 打包项目 ==============="
- mvn clean package -Dmaven.test.skip=true
# 只作用在master分支
only:
- master
# 这里可以将maven 打包好的文件传递给下一个 stage ,然后下一步的docker 就可以根据 这个 jar 包 和Dockerfile 构建镜像
artifacts:
# 指定下过期时间和路径
expire_in: 1 days
paths:
- target/*.jar
build:
stage: build
script:
- echo "=============== 删除上传镜像 ==============="
# -t 后面就生成镜像的名称
- docker build -t hello_netty .
#有远程私仓的登录一下如果没有远程私仓下面三步就不要了
- docker login --username 用户名--password 密码
#镜像打上标签
- docker tag hello_netty xxx.xxx.xxx.xxx:85/test/hello_netty
#上传镜像
- docker push xxx.xxx.xxx.xxx:85/test/hello_netty
only:
- master
tags:
- build
deploy:
stage: deploy
script:
- echo "=============== 部署项目 ==============="
#创建容器之前先停止容器||true很重要 如果不加就报错 假如没有这个容器名称停止就是报错
- docker stop -f $IMAGE_NAME || true
#删除老的容器
- docker rm -f $IMAGE_NAME || true
- docker run -d --name $IMAGE_NAME -p 8087:8087 hello_netty
only:
- master
tags:
- deploy
看一下成品
在另外一台服务器搭建Harbor 说简单一点 因为我的服务器小 我代码分开部署的这时候就需要子的远程私仓了来管理镜像
先安装Docker并启动Docker 上面有
先安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker- compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
给docker-compose添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
查看docker-compose是否安装成功
docker-compose -version
下载Harbor的压缩包(本课程版本为:v1.9.2)
harbor
百度云
提取码:1234
上传压缩包到linux,并解压
tar -xzf harbor-offline-installer-v1.8.0.tgz
mkdir /opt/harbor
mv harbor/* /opt/harbor
cd /opt/harbor
#修改Harbor的配置
vi harbor.yml
修改hostname和port #hostname不要用localhost和127.0.0.1
hostname: xxx.xxx.xxx.xxx
port: 85
安装Harbor
./prepare
./install.sh
启动Harbor
docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动
#http://xx.xxx.xxx.xx:85
#默认账户密码:admin/Harbor12345
进去创建仓库在创建几个用户 给创建的仓库添加角色
给镜像打上标签
docker tag 镜像名称 xxx.xxx.xxx.:85/仓库名称/镜像名
推送镜像
docker push 镜像名称 xxx.xxx.xxx.:85/仓库名称/镜像名
The push refers to repository [xxx.xxx.xxx:85/tensquare/eureka] Get https:/xxx.xxx.xxx:85/v2/: http: server gave HTTP response to HTTPS client
这时会出现以上报错,是因为Docker没有把Harbor加入信任列表中
)把Harbor地址加入到Docker信任列表
vi /etc/docker/daemon.json
{"registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"], "insecure-registries": ["xxx.xxx.xxx.xxx:85"] }
需要重启Docker
重起过后再次执行上面的命令
cd /opt/harbor
./prepare
./install.sh
再次执行推送命令,会提示权限不足
denied: requested access to the resource is denied
需要先登录Harbor,再推送镜像
docker login -u 用户名 -p 密码 xxx.xxx.xxx.xxx:85
这里就结束了
以上是关于2021-09-07的主要内容,如果未能解决你的问题,请参考以下文章
2021-09-07:单词接龙 II。按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -