GitLab on Docker

GitLab のバージョンアップしてみたところ、スクリプトエラーになってしまうので、作り直そうかと。
せっかくなので、GitLab は Docker でも動作させることができるようなので、Docker やってみよう。
OS もサポートが終わりそうなので CentOS Stream にしますか。

インストールの参考は、GitLab Docker images (docs.gitlab.com)

Docker

$ sudo dnf install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install -y docker-ce docker-ce-cli containerd.io
$ sudo systemctl start docker
$ sudo systemctl enable docker

Install Docker Compose (docs.docker.com)

$ sudo curl -L https://github.com/docker/compose/releases/download/1.28.2/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
$ sudo source /etc/bash_completion.d/docker-compose

GitLab

$ mkdir -p /var/opt/docker/gitlab
環境変数 GITLAB_OMNIBUS_CONFIG に、gitlab.rb の設定を書く。
SSHのポート変更しないと、dockerのホストのSSHと被り、起動しないので、変更する。
また、HTTPS でなく、HTTPの設定を入れる。
web:
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.lab.local'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://gitlab.lab.local'
      # HTTP setting
      nginx['listen_https'] = false
      nginx['listen_port'] = 80
      nginx['redirect_http_to_https'] = false
      letsencrypt['enable'] = false
      # SSH port
      gitlab_rails['gitlab_shell_ssh_port'] = 2224
      # Time Zone
      gitlab_rails['time_zone'] = 'Asia/Tokyo'
      # LDAP setting
      gitlab_rails['ldap_enabled'] = true
      gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
        main: # 'main' is the GitLab 'provider ID' of this LDAP server
          label: 'Active Directory'
          host: 'lab.local'
          port: 636
          uid: 'sAMAccountName'
          bind_dn: 'CN=GitLab,CN=Users,DC=lab,DC=local'
          password: 'gitlabuser'
          encryption: 'simple_tls' # "start_tls" or "simple_tls" or "plain"
          verify_certificates: false
          smartcard_auth: false
          active_directory: true
          allow_username_or_email_login: true
          lowercase_usernames: true
          block_auto_created_users: false
          base: 'DC=lab,DC=local'
          user_filter: ''
        EOS
  ports:
    - '80:80'
    - '443:443'
    - '2224:22'
  volumes:
    - '/var/opt/docker/gitlab/config:/etc/gitlab:Z'
    - '/var/opt/docker/gitlab/logs:/var/log/gitlab:Z'
    - '/var/opt/docker/gitlab/data:/var/opt/gitlab:Z'
$ docker-compose up -d
$ sudo firewall-cmd --add-port=2224/tcp --permanent
$ sudo firewall-cmd --add-service={http,https} --permanent
$ sudo firewall-cmd --reload

以上で、ブラウザからアクセスできるようになる。