ActPi向阳技术栈
← 返回文章列表

Docker 版 Gitlab 搭建

  1. 安装Docker-ce curl -fsSL https://get.docker.com -o get-docker.sh

  2. 安装docker-compose

    curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
  3. 使用阿里云镜像为docker加速

    首先需要一个阿里云的帐号,然后进入容器镜像服务控制台,下面有一个加速器。我们点击它之后,阿里云会为我们创建一个专属加速器地址。

    tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://5g1ay0jx.mirror.aliyuncs.com"]
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker
  4. 拉取gitlab docker镜像 docker pull gitlab/gitlab-ce:latest

  5. 编辑docker-compose文件

    web:
      container_name: gitlab
      image: 'gitlab/gitlab-ce:latest'
      restart: always
      hostname: 'gitlab.example.com'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG:
          # 默认为http,如下设置为启用HTTPS访问
          external_url 'https://gitlab.example.com'
          gitlab_rails['gitlab_shell_ssh_port'] = 5222
          # 修改docker内部时区
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          # Add any other gitlab.rb configuration here, each on its own line
      ports:
        - '80:80'
        - '443:443'
        - '5222:22'
      volumes:
        - '/data/gitlab/etc:/etc/gitlab'
        - '/data/gitlab/logs:/var/log/gitlab'
        - '/data/gitlab/data:/var/opt/gitlab'

    默认的 ssl 证书为 OpenSSL 自签名证书,如需使用正规 CA 颁发的 SSL 证书,需要在 /etc/gitlab 目录创建 ssl 路径,并将对应 ssl 证书放到里面

    mkdir -p /etc/gitlab/ssl
    chmod 700 /etc/gitlab/ssl
    cp gitlab.example.com.key gitlab.example.com.crt /etc/gitlab/ssl/
  6. 启动gitlab docker-compose up -d

  7. 浏览器访问 [https://gitlab.example.com]

第一次打开需要先修改 root 管理员密码,才可以登录

PS.其他配置

  1. 默认头像不显示 配置 gravatar 国内镜像站

    gitlab_rails['gravatar_plain_url'] = 'http://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon'
    gitlab_rails['gravatar_ssl_url'] = 'https://sdn.geekzu.org/avatar/%{hash}?s=%{size}&d=identicon'
  2. 开启SMTP

    gitlab_rails['gitlab_email_enabled'] = true
    gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
    gitlab_rails['gitlab_email_display_name'] = 'GitLab'
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.example.com"
    gitlab_rails['smtp_port'] = 994
    gitlab_rails['smtp_user_name'] = "gitlab@example.com"
    gitlab_rails['smtp_password'] = "xxxxxxxxx"
    gitlab_rails['smtp_domain'] = "smtp.example.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = true
  3. 开启 LDAP

gitlab_rails['ldap_enabled'] = true
# gitlab_rails['prevent_ldap_sign_in'] = false

###! **remember to close this block with 'EOS' below**
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
  main: # 'main' is the GitLab 'provider ID' of this LDAP server
    label: 'LDAP'
    host: '192.168.x.x'
    port: 389
    uid: 'cn'
    bind_dn: 'cn=admin,dc=example,dc=com'
    password: 'password'
    encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
    verify_certificates: false
    active_directory: false
    block_auto_created_users: false
    allow_username_or_email_login: true
    base: 'dc=example,dc=com'
    user_filter: ''
EOS