0%

Docker搭建Gitlab服务器

Docker搭建Gitlab服务器

获取 Gitlab 镜像

1
docker pull gitlab/gitlab-ce

启动容器

映射端口,配置访问方式

  • 8443 https
  • 8080 http
  • 8022 ssh

挂载3个volume到容器里,分别用于配置,持久化,日志。

1
2
3
4
5
6
7
8
9
10
docker run -dit \
-p 8443:443 \
-p 8080:80 \
-p 8022:22 \
--name gitlab \
--restart always \
-v /etc/gitlab/config:/etc/gitlab \
-v /var/log/gitlab/logs:/var/log/gitlab \
-v /var/opt/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

配置 Gitlab

进入容器修改配置文件

1
2
docker exec -it gitlab /bin/bash
vim /etc/gitlab/gitlab.rb

或者你可以直接修改宿主机的配置文件

1
/etc/gitlab/config/gitlab.rb

然后进入容器重新加载配置

1
2
docker exec -it gitlab /bin/bash
gitlab-ctl reconfigure

gitlab.rb 配置文件

假如你有一个域名:gitlab.wudinaonao.com (这是我的域名)

增加内容

  • external_url 设置
    1
    2
    3
    4
    5
    6
    #
    # 注意要有前缀,不能直接写域名,http或https
    # example
    # external_url "https://gitlab.wudinaonao.com"
    #
    external_url "https://gitlab.wudinaonao.com"
    如果使用https的话记得配置nginx选项。具体参见nginx配置ssl

重载配置

1
gitlab-ctl reconfigure

反向代理到容器提供的8848端口

Nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...省略其他

location ~/ {
# 如果代理到一个动态域名,这里需要设置解析DNS
# 不然Nginx只在启动的时候解析一次
resolver 8.8.8.8 114.114.114.114 valid=10s;
resolver_timeout 3s;
# 假如你要代理到 127.0.0.1:8848
set $target "127.0.0.1:8848";
# 这里之前填写成 $proxy_host 导致代理失败
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
proxy_ssl_certificate # 证书路径;
proxy_ssl_certificate_key # 私钥路径;
proxy_pass https://$target;
}


登录

1
https://gitlab.wudinaonao.com

20200501235435

第一次登录需要设置root密码。

这里我已经设置好了。