Docker部署GitLab
2017-08-27 本文已影响585人
殷临风
现在docker
越来越火, 很多开源服务纷纷支持docker, gitlab
也不例外, 现在官方也支持docker部署. 在此之前, 也有第三方支持过docker, 安装步骤相对来讲会复杂一点, 会把gitlab
, postgresql
和redis
分别打包成镜像, 然后通过容器连接使用, 这里不介绍这种方式.
一. 确保机器上安装了docker并启动
# 安装docker
yum install docker
# 启动docker
systemctl start docker
安装完成后建议配置加速器(比如阿里云镜像加速), 否则拉取镜像会非常慢, 特别是gitlab镜像, 还是非常大的
二. 拉取镜像并启动
# 拉取镜像
docker pull gitlab/gitlab-ce
# 启动
docker run --detach \
--publish 22443:443 --publish 2280:80 --publish 2222:22 \
--name gitlab \
--memory 4g \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
容器状态
--publish
暴露了容器的三个端口, 分别是https
对应的443
,http
对应80
以及ssh
对应的22
(如果不需要配置https
, 可以不暴露)
--memory
限制容器最大内存暂用4G, 这是官方推荐的
--volume
指定挂载目录, 这个便于我们在本地备份和修改容器的相关数据
三. 修改配置文件并重启
# 打开挂载的配置目录
vi /srv/gitlab/config/gitlab.rb
###################################################
# 添加外部请求的域名(如果不支持https, 可以改成http)
external_url 'https://gitlab.yinnote.com'
# 修改gitlab对应的时区
gitlab_rails['time_zone'] = 'PRC'
# 开启邮件支持
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@yinnote.com'
gitlab_rails['gitlab_email_display_name'] = 'Yinnote GitLab'
# 配置邮件参数
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.mxhichina.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "gitlab@yinnote.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "yinnote.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
###################################################
(选配) 如果配置了https
, 需要导入证书
# 进入挂载配置目录
cd /srv/gitlab/config
# 创建密钥文件夹, 并放入证书
mkdir ssl
# 内容如下
重启服务
# 方法一: 重启容器(其中xxxxxx是容器id)
docker restart xxxxxx
# 方法二: 登陆容器, 重启配置
docker exec -it xxxxxx bash
gitlab-ctl reconfigure
- 通过
ssh
方式拉取代码时, 记住端口号是2222
, 不是默认的22
- 如果没有配置
https
, 是无法通过https路径拉取代码的
相关文档地址
镜像地址 https://hub.docker.com/r/gitlab/gitlab-ce
容器启动 https://docs.gitlab.com/omnibus/docker