快速配置应用

docker-compose.yml

使用 docker-composedocker 容器集群进行快速编排

获取 docker-gitlabdocker-compose.yml 配置文件,进行快速构建

$ wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

获取 docker-compose.yml 文件后,进行自定义配置。

配置环境

打开 docker-compose.yml 文件,针对 gitlab 进行环境配置

version: '2.3'services:...# 省略显示其他服务...gitlab:restart: alwaysimage: sameersbn/gitlab:13.0.6depends_on:- redis- postgresqlports:- "10080:80"- "10022:22"volumes:- gitlab-data:/home/git/data:Zhealthcheck:test: ["CMD", "/usr/local/sbin/healthcheck"]interval: 5mtimeout: 10sretries: 3start_period: 5menvironment:- DEBUG=false- DB_ADAPTER=postgresql- DB_HOST=postgresql- DB_PORT=5432- DB_USER=gitlab- DB_PASS=password- DB_NAME=gitlabhq_production- REDIS_HOST=redis- REDIS_PORT=6379- TZ=Asia/Kolkata- GITLAB_TIMEZONE=Kolkata- GITLAB_HTTPS=false- SSL_SELF_SIGNED=false- GITLAB_HOST=localhost- GITLAB_PORT=10080- GITLAB_SSH_PORT=10022- GITLAB_RELATIVE_URL_ROOT=- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string- GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string- GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string...# 省略其他配置...

参考配置文档,我们需要将时区设置为东八时区,设置数据混淆密匙,设置服务地址。

environment:
- TZ=Asia/Shanghai
- GITLAB_TIMEZONE=Asia/Shanghai- GITLAB_HOST=192.168.2.192

设置混淆密匙,一般推荐 64 位随机字符串,可以用 pwgen 生成,可以安装 pwgen 服务,然后运行 pwgen -Bsv1 64 即可生成随机字符串。

environment:
- GITLAB_SECRETS_DB_KEY_BASE=nvqgzJdgrmr3tqsC4F9gKVNhKvTq3N7cJPjNggR93qthNhJ3MWkc7jNmNTLRXdhX
- GITLAB_SECRETS_SECRET_KEY_BASE=pcrf73fX4rM7bKxc7tcq3kwKWdtKKtrmmsHwT3J9rwCLMsK37PxCnXbMgnRpqJbk
- GITLAB_SECRETS_OTP_KEY_BASE=3d9tPCzpv7rfmVgnjN9McbztRVbp4rjxWWqFbNLTCbRz9mKkpvqqWgxMq7NM7c9w

同理,docker-compose.yml 的其他服务也需要配置东八时区。

数据卷挂载

数据卷挂载可对数据进行持久化保存,不会因为容器的删除而删除,数据挂载的目录数据会自动与容器内的数据同步,数据挂载的目录数据优先于容器内数据,即修改数据卷数据,会自动同步到容器内数据。

version: '2.3'services:redis:restart: alwaysimage: redis:5.0.9command:- --loglevel warningvolumes:- redis-data:/var/lib/redis:Zenvironment:- TZ=Asia/Shanghaipostgresql:restart: alwaysimage: sameersbn/postgresql:11-20200524volumes:- postgresql-data:/var/lib/postgresql:Zenvironment:- DB_USER=gitlab- DB_PASS=password- DB_NAME=gitlabhq_production- DB_EXTENSION=pg_trgm- TZ=Asia/Shanghaigitlab:restart: alwaysimage: sameersbn/gitlab:13.0.6depends_on:- redis- postgresqlports:- "10080:80"- "10022:22"volumes:- gitlab-data:/home/git/data:Zhealthcheck:test: ["CMD", "/usr/local/sbin/healthcheck"]interval: 5mtimeout: 10sretries: 3start_period: 5m

注意:数据卷的挂载,需要在宿主机提前创建好对应的目录。

手动创建以下目录:

/app/volumes/gitlab/gitlab/
/app/volumes/gitlab/postgresql/
/app/volumes/gitlab/redis/

修改对应数据卷配置:

redis:restart: alwaysimage: redis:5.0.9command:- --loglevel warningvolumes:- /app/volumes/gitlab/redis:/var/lib/redis:Z
postgresql:restart: alwaysimage: sameersbn/postgresql:11-20200524volumes:- /app/volumes/gitlab/postgresql:/var/lib/postgresql:Z
gitlab:restart: alwaysimage: sameersbn/gitlab:13.0.6depends_on:- redis- postgresqlports:- "10080:80"- "10022:22"volumes:- /app/volumes/gitlab/gitlab:/home/git/data:Z

gitlab-runner

拉下来的 docker-compose.yml 文件默认是没有 gitlab-runner 的,我们需要将 gitlab-runner 写到 docker-compose.yml 配置上来。

也要先创建数据卷挂载文件目录:

/app/volumes/gitlab-runner/config/
gitlab-runner: restart: alwaysimage: gitlab/gitlab-runnerdepends_on:- gitlabvolumes:- /app/volumes/gitlab-runner/config:/etc/gitlab-runner:Z- /var/run/docker.sock:/var/run/docker.sockenvironment:- TZ=Asia/Shanghai

快速构建应用

将配置好的 docker-compose.yml 文件放到 /app/docker/gitlab/ 下,执行以下命令:

$ cd /app/docker/gitlab/
$ docker-compose up

docker-compose 会自动管理 docker 容器集群,包括对镜像进行拉取、创建以及启动。

稍等片刻,我们即可通过 http://192.168.2.192:10080/ 打开 gitlab 页面,第一次打开是直接设置 root 账号的密码,设置密码后即可登录进入 gitlab 内页。

英文不好的同学可以进入个人设置那里设置 language 为简体中文。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2b2AJvbG-1592446174805)(https://files.catbox.moe/7o1urw.png)]

注册runner

什么是 runnerrunner 就是 gitlab 进行可持续集成与可持续交付过程所跑的环境容器服务。

为了进行 ci/cd => 可持续集成/可持续部署,我们需要注册 runner,一般我们注册的是共享 runner,也就是任何仓库的 ci/cd 都可以在上面跑。当然,我们也可以创建多个 runner 服务,为特定仓库指定 runner

下面以注册共享 runner 为例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WkJDOX56-1592446174807)(https://files.catbox.moe/u581dt.png)]

比如

  1. 进入 runner 容器
$ docker exec -it 容器ID bash
  1. 注册 runner
$ gitlab-runner register
  1. 输入 gitlab 示例的 url
 $ Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ):http://192.168.2.192:10080/
  1. 输入用来注册 runnertoken
$ Please enter the gitlab-ci token for this runner:
yrErncrc8XY_e5-g7bU8
  1. 输入 runner 的描述,随后可在 gitlab 界面中修改
$ Please enter the gitlab-ci description for this runner:
gitlab-ci
  1. 输入与 runner 绑定的标签(可修改)
$ Please enter the gitlab-ci tags for this runner (comma separated):
gitlab-ci
  1. 选择 runner 的执行方式(推荐docker
 $ Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:docker
  1. 如果选择的执行方式是 docker,会要求填写默认的镜像
$ Please enter the Docker image (eg. ruby:2.1):
alpine:latest

注册成功后会在 runner 容器 ~/etc/gitlab-runner/ 目录下生成 config.toml 配置文件,这时候就可以在 gitlab 的管理页面中看到激活的 runner

然后,对 runner 进行修改,勾选 runner 可以选择无标签的项目(默认是同样标签的项目才能使用对应标签的 runner)。这样,runner 就可以变为共享 runner 了。

当我们需要专门为某个项目跑的 runner 时,那就不需要勾选 runner 可选择无标签选项,在下面配置添加 runner 服务的项目保存即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fQMjLi9y-1592446174816)(https://files.catbox.moe/leis7m.png)]

可持续集成/部署

可持续集成与部署需要配置 .gitlab-ci.yml 文件,gitlab 会检查每个仓库根目录是否存在 .gitlab-ci.yml 文件,有的话 runner 则自动跑起来。

gitlab 默认开启 auto devops 功能,如果没有 .gitlab-ci.yml 文件,则会自动运行 auto devops,如果没有配置 Auto DevOps 功能与 Kubernetes 集成的话,建议关闭默认的 auto devops 功能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7CJVyTL-1592446174818)(https://files.catbox.moe/kq1s50.png)]

.gitlab-ci.yml

这是一个自动编译前端代码并发布到 gitlab page 的配置文件:

building: image: node:alpine    # 指定运行环境stage: build          # 当前stage阶段为buildscript:               # build阶段运行的脚本- yarn --registry=https://registry.npm.taobao.org- yarn docs:buildartifacts:            # 工件,可以缓存在gitlab的流水线记录中,供直接下载expire_in: 3 days   # 工件缓存的有效时间paths:              # 路径- docs/.vuepress/dist/            # 工件指向的目录,这里指整个dist目录cache:                  # 缓存paths:                # 路径- node_modules/     # 缓存node_mudules将大大提高ci运行的速度deploying: stage: deploy         # 当前阶段为deployscript:               # deploy阶段运行的命令- rm -rf public/*   # linux命令,递归无询问删除public目录下所有文件- mv dist/* public //将dist目录下的所有文件都移动到public目录下artifacts:            # 工件缓存expire_in: 3 days   # 时效为3天paths:              # 路径- public          # 缓存整个public目录的文件only: - master               # ceate pages下的所有操作只在 master 分支上进行

自动化

当我们提交我们的代码后,gitlab 会自动根据 .gitlab-ci.yml 的配置运行 runner

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUZ9pzDX-1592446174820)(https://files.catbox.moe/uwlpm2.png)]

这样我们就实现自动化集成与部署了,大大的提高了我们的开发效率。

身份认证

我们在 gitlab 上注册了自己的账号后,为了方便身份认证,一般需要用 ssh 生成身份认证密匙,这样就不需要每次访问都要输入账号密码。

配置SHH密匙

在我们的电脑 git bash 输入:

$ ssh-keygen -t rsa -C "我们在gitlab注册的邮箱" -f ~/.ssh/gitlab_id_rsa

此时会在我们电脑用户根目录的 /.ssh 下生成私匙跟公匙:

gitlab_id_rsa
gitlab_id_rsa.pub

打开 pub 后缀的公匙,复制粘贴到 gitlab 用户设置,保存即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUWc2bpL-1592446174824)(https://files.catbox.moe/o9sp5y.png)]

在对 gitlab 仓库使用 git 命令的时候,如果出现提示没有权限的话,多半是因为 git 混淆了 githubgitlabssh 密钥,解决方法看下一步。

github与gitlab共存

假设我们之前就已经生成了 githubssh 密匙:

github_id_rsa
github_id_rsa.pub

在我们电脑的用户目录 /.ssh/ 下创建 config 文件,配置如下,保存即可:

#github
Host github.com
HostName github.com
IdentityFile C:/Users/jwchan/.ssh/github_id_rsa#gitlab
Host 192.168.2.192
HostName 192.168.2.192
IdentityFile C:/Users/jwchan/.ssh/gitlab_id_rsa

这样,我们在提交代码的时候,会自动区分目标服务器从而使用对应的 ssh 密匙。

git基本操作

  1. 拉取仓库
$ git clone ssh://git@192.168.2.192:10022/jwchan/blog.git
  1. 进入仓库贡献代码
$ cd /blog/
  1. 查看仓库代码修改状态
$ git status
  1. 添加代码缓冲区
$ git add .
  1. 提交代码并注释
$ git commit -m "[fix]: bug"
  1. 推送代码到远程仓库
$ git push

centos7 使用 docker 部署 gitlab + gitlab-runner相关推荐

  1. Centos7使用Docker部署Chemex资产管理系统

    前言 chemex 是一个开源的.轻量且高颜值的信息资产管理系统.系统基于 Laravel 开发,数据库支持 MySQL or MariaDB. 一.Centos7系统安装,(系统安装步骤省略) 1. ...

  2. 腾讯云(CentOS7)使用Docker部署JeecgBoot

    参考文章: 官方文档 linux (CentOS7+)安装docker 部署jeecgBoot项目 CentOS7 使用docker 安装redis 安装docker 由于我用的腾讯云,自带docke ...

  3. QuickStart系列:docker部署之Gitlab本地代码仓库

    gitlab是可以在本地搭建的使用git作为源代码管理的仓库. 运行环境: win10+vmware14+docker7+docker 1. 使用命令拉取镜像(非必须,耗时比较久,这里以ce为准,ce ...

  4. centos7下docker 部署javaweb

    为什么80%的码农都做不了架构师?>>>    LXC linux container 百度百科:http://baike.baidu.com/link?url=w_Xy56MN9i ...

  5. Centos7 使用Docker 部署Nginx+mysql+tomcat+调试联通_03

    文章目录 Nginx部署 1. 拉取Nginx镜像 2. 创建Nginx容器 3. 测试Nginx 4. 配置反向代理 5. 浏览器nginx容器和tomcat容器联通测试 6. 浏览器tomcat容 ...

  6. Centos7 使用Docker 部署Tomca+mysql+调试联通_02

    文章目录 一.Tomcat部署 1. 拉取tomcat镜像 2. 上传cas项目 3. 修改cas系统的配置文件 4. 创建tomcat容器 5. 浏览器测试部署的web应用 6. 输入账号密码测试m ...

  7. Linux CentOS7.6 Docker部署Harbor(附 Github 文件加速下载)

    推荐一个Github 文件加速下载网站 https://gh.api.99988866.xyz/ 把Github要下载的文件链接地址复制进去就可以快速下载啦 ===================== ...

  8. Centos7通过Docker部署Harbor仓库

    一.下载Harbor安装包 下载地址:https://github.com/goharbor/harbor/releases/ 二.安装docker 由于 Harbor 是采用 docker-comp ...

  9. Linux centos7 docker部署gitlab私有服务器

    Docker部署gitlab私有服务器,那么,这里必须要有两个软件啦,一个是Docker,一个是gitlab.鉴于很多同学还是不太了解这两个东西,并且观看了不少的其他大神的相关博客,发现对于Docke ...

最新文章

  1. SpringBoot 第十篇: 用spring Restdocs创建API文档
  2. linux下搭建基于python的vim,Linux下搭建基于python的VIM-Go语言中文社区
  3. c语言dll注入器,Module Injector-Module Injector(DLL动态库注入器)下载 v1.0--pc6下载站
  4. python numpy矩阵索引_python – Numpy中的矩阵索引
  5. 音频编码:ADPCM
  6. 众成翻译2.0上线,翻译即有机会获赠图书
  7. Nacos 配置集导出和导入
  8. 乒乓球单循环赛_乒乓球淘汰赛制和单循环赛制的比赛方法是什么?
  9. mysql数据对比_MySQL--如何快速对比数据
  10. RS485芯片介绍及典型应用电路
  11. 抖音是怎么做出来的?| 创业故事
  12. 最小二乘支持向量机分类器(LSSVM)及Python实现
  13. 载银纳米TiO2/壳聚糖水凝胶/pH/GSH响应羧甲基壳聚糖水凝胶和纳米凝胶的制备
  14. 博士申请 | 香港城市大学计算机学院徐伟涛老师组招收人工智能全奖博士生
  15. UI设计规范-全文篇
  16. 女人要优雅,男人要幽默
  17. H5数独游戏开发——游戏通关及重玩
  18. python 操作ps脚本_python – 有没有办法以编程方式获得ps输出?
  19. 35岁以上的那些测试员何去何从?
  20. 手机网站开发必修课[1]:手机浏览器

热门文章

  1. Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeExce
  2. 推荐系统算法—协同过滤算法详解
  3. 如何运营一个女性社区?
  4. 计算机类高级职称考哪个职称英语,计算机专业考职称英语3个类别
  5. 群体创新更能促进社会进步
  6. 适合大学生、职场人士提高效率的实用性网站。
  7. JDK1.7和JDK1.8 的区别
  8. 万豪旅享家旗下万怡酒店品牌落子江苏江阴
  9. Java 汉语转拼音
  10. 在 macOS 上安装 OpenCV