Docker 搭建 Gitlab 服务
发布时间 2020年3月13日 (更新时间 2024年4月1日) • 1 分钟 读完 • 181 字Docker 快速搭建 Gitlab 服务
公司使用的bitbucket提供的git远程仓库,为什么选择他历史原因喽,回想第一天克隆一个1G+的repo等待了一天,这个痛苦啊。最近的每次发版都着实的感觉到bitbucket慢的给蜗牛一样(应该是墙的问题每次都得开VPN才能正常玩啥),鉴于此情况下,决定使用自建Gitlab服务,选择华东(上海)地区机房,日本团队的小伙伴测试的速度400M+大小的repo,克隆下来30分钟左右。
Ubuntu 安装 Docker,官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/
sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.ioroot@jira:~# docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea838
Built: Wed Nov 13 07:50:12 2019
OS/Arch: linux/amd64
Experimental: false
...
...使用开源的Gitlab docker-compose.yml快速搭建,
我计划将gitlab服务放在/usr/local/gitlab目录,故创建了此目录
docker-compose.ymlmkdir /usr/local/gitlab && cd /usr/local/gitlab
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.ymldocker-compose.yml配置项,这里仅贴出修改过的配置项# 时区
- TZ=Asia/Shanghai
- GITLAB_TIMEZONE=PRC
# 开启SSL
- GITLAB_HTTPS=true
# Gitlab 域和端口,域名不要带协议如(http://或https://)
- GITLAB_HOST=git.neox-inc.com
- GITLAB_PORT=443
- GITLAB_SSH_PORT=22这里我对外暴露的是9180和9122端口,然后在负载均衡器中配置SSL证书,完成对https的访问,如需ssh方式访问,负载均衡器中还需配置22=>9122的转发,负载均衡器配置图见下图。
gitlab:
restart: always
image: sameersbn/gitlab:12.5.5
depends_on:
- redis
- postgresql
ports:
- "9180:80"
- "9122:22"
- "443:443"
volumes:
- ./gitlab-data:/home/git/data:Z为更日后更方便迁移gitlab服务,redis-data、postgresql-data、gitlab-datavolumes,这里我分别配置成相对’./‘目录
apt install docker-compose或者通过pip安装
pip install docker-compose==1.8.0不推荐如下curl方式安装(你要问为什么?下载速度比乌龟爬的都慢「龟速」)
sudo curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version4.启动 gitlab 服务
docker-compose up -d http://ip:9180如果你是域名直接解析到本地,那么可以通过域名访问。
我司ssl证书统一管理在阿里云负载均衡器上,为了日后方便统一更换过期证书,gitlab服务也使用负载均衡器。通过研究阿里云负载均衡器发现,不支持前端协议http转后端协议tcp。
那么问题来了,docker-compose启的服务全部都是tcp协议,那么如何完成ssl即http前端协议转后端某个端口的http协议呢?
经过思考,只得借用nginx转发实现,配置如下:
upstream git.neox-inc.com {
server ip:9180;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name git.neox-inc.com;
location / {
proxy_pass http://git.neox-inc.com;
}
}均衡器中监听配置图

参考地址:https://www.jianshu.com/p/83b06525c946
为了方便后期迁移Gitlab到别的服务器,强烈建议将数据目录配置gitlab-data数据目录,方便迁移(不远的3个月我就迁移过,甚是方便:-))
docker-compose 卸载方式:
sudo rm /usr/local/bin/docker-compose2.pip方式卸载
pip uninstall docker-compose