阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

docker-gitlab部署

454次阅读
没有评论

共计 3745 个字符,预计需要花费 10 分钟才能阅读完成。

docker 用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全。

Gitlab 是目前比较流行的开源类 Github 代码管理平台。Gitlab 使用 Rails 开发,使用 PostgreSQL 或 MySQL 数据库,Redis 做缓存。一般自己搭建私有代码仓库,Gitlab 通常是首选。这里简单介绍一下 dockerized Gitlab。

Gitlab 的 docker 镜像早已有人做好了,并且维护相当不错。大家可以前往其 GitHub 仓库了解该镜像的情况。官方 repo 的 readme 中已经有详细的安装配置方案,这里我简单的梳理一下部署流程。

安装 Docker

这里以 Ubuntu 14.04 发行版为例,在 bash 中输入一下命令安装最新的 docker:

sudo apt-get purge docker.io
curl -s https://get.docker.io/ubuntu/ | sudo sh
sudo apt-get update
sudo apt-get install lxc-docker

注意: 如果你使用了阿里云最新推出的 Docker 镜像,那么可以省略本节的步骤。因为阿里云的这个镜像已经自带了 1.2 版的 docker,版本比较新,可以直接使用。

安装 docker-gitlab

使用如下命令可以使 Docker 下载对应版本的 Gitlab 镜像:

docker pull sameersbn/gitlab:7.5.3

上面的命令下载 7.5.3 版的 Gitlab,如果想下载最新版本,可以输入以下命令:

docker pull sameersbn/gitlab:latest

待下载完成后就算完成安装了。
也可以 Clone 刚才的提到的仓库,然后在本机上 build 镜像:

git clone https://github.com/sameersbn/docker-gitlab.git
cd docker-gitlab
docker build --tag="$USER/gitlab" .

注意上面最后一行命令结尾有一个 ”.” 符号,不要掉了。

安装 PostgreSQL

Gitlab 推荐使用 PostgreSQL 作为数据库。既然使用了 docker,那么我们为何不考虑把所有的组件都用 docker 包装起来?我们一样可以下载 PostgreSQL 的镜像完成安装,这种安装更加便捷。

首先输入以下命令下载 PostgreSQL 镜像:

docker pull sameersbn/postgresql:latest

然后我们要为数据库默认的表空间建立目录以存放数据:

mkdir -p /opt/postgresql/data

这里 /opt/postgresql/data 部分可以替换成你自己希望建立的地址。
如果是使用 SELinux,那么还需要改变一下这个目录的安全设置:

sudo chcon -Rt svirt_sandbox_file_t /opt/postgresql/data

如果没有使用 SELinux,可以跳过上面一条命令。

最后使用以下命令行启动数据库:

docker run --name=postgresql -d \
  -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \
  -v /opt/postgresql/data:/var/lib/postgresql \
  sameersbn/postgresql:latest

这里,”-e” 选项后面的内容请不要随意变更,这里的配置都是 Gitlab 默认的数据库配置,如果没有在后面 Gitlab 镜像启动的设置里面做相应的修改的话,这里的修改会让程序无法正常运行。

安装 Redis

同样,我们可以使用 docker 来安装 Redis:

docker pull sameersbn/redis:latest

然后启动它:

docker run --name=redis -d sameersbn/redis:latest

启动 gitlab

在最终启动 Gitlab 之前,我们还需要为 Gitlab 创建一个目录用来存放提交上来的代码,docker-gitlab 内部使用 /home/git/data 这个目录存放代码,我们在容器外部创建一个目录然后在启动的时候挂载到这个路径即可:

mkdir -p /opt/gitlab/data
mkdir -p /opt/gitlab/backups

同样,如果使用 SELinux,需要修改目录的安全配置:

sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/data
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/backups

在完成上面所有的步骤以后,我们可以用以下命令启动 Gitlab:

docker run --name='gitlab' -d \
  -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \ 
  -e 'GITLAB_BACKUPS=monthly' \
  -p 10022:22 -p 10080:80 \
  -v /opt/gitlab/data:/home/gitl/data \
  -v /opt/gitlab/backups:/home/git/data/backups
  sameersbn/gitlab:7.5.3

上面的命令将使用 10080 作为 Gitlab 的 Web 访问端口,10022 将作为 ssh push 和 pull 代码的端口。
在本地可以使用浏览器打开 http://localhost:10080 来访问 Gitlab,初始登录网站使用 root 账户,用户名为root,密码为:5iveL!fe,登录后需要立即修改密码。

这里解释一下各参数:

-d: 后台运行
-e:配置 Gitlab 运行的环境变量,这个参数很重要,具体有哪些环境变量,后面列举
-p: 端口转发规则
-v: 共享目录挂载,即 docker 容器内外数据共享

Gitlab 的环境变量配置比较多,这里列举一下比较重要的 Gitlab 的环境变量:

  • GITLAB_HOST: 这个是 Gitlab 服务器的 hostname,你需要将此设定为网站的域名或者 ip(不带端口号),默认值为 localhost,这个值��被 Gitlab 用来生成 repo 的链接,所以必须要设置。否则,在创建的 repo 中,会发现所有的 repo 链接都是以localhost 为 hostname。
  • GITLAB_PORT Gitlab 网站的访问端口,这里的设置要结合端口转发一起设置,否则会导致网站无法访问,默认值为80
  • GITLAB_SSH_PORT Gitlab 的 SSH 代码提交方式使用的 SSH 端口,这里的设置要结合端口转发一起设置,否则会导致代码无法提交,默认值为 22。如果是在 VPS 上部署,这个值请使用别的端口,比如上面提到的10022 端口,否则会与 VPS 原本的 SSH 端口产生冲突,造成 SSH 无法登录 VPS
  • GITLAB_BACKUPS Gitlab 的自动备份配置,有 disable, daily, weekly, monthly 四个可选值,默认为disable。建议打开自动备份
  • GITLAB_BACKUP_DIR Gitlab 自动备份目录,默认值为/home/git/data/backups

其他的参数请参考 repo 中的 README.md.

更多 Docker 相关教程见以下内容

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm 

Ubuntu 使用 VNC 运行基于 Docker 的桌面系统  http://www.linuxidc.com/Linux/2015-08/121170.htm 

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm 

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-05/131887.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3745字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7984093
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...