はじめに
GitLabをローカルで立ち上げようと思い立ち、docker-composeならすぐだろうと思ったがそんなことはなかったのでメモ。
gitlab.rbファイルの編集をしないと立ち上げたWebに接続できなかったというお話です。
環境(DockerホストPC)
- ホスト名:seiryu
- IP: 192.168.0.4/24
- OS: Ubuntu 21.04 Server (on Hyper-V Server 2019)
- docker ver: 20.10.7
- docker-compose ver: 1.29.2
$ uname -a
Linux seiryu 5.11.0-18-generic #19-Ubuntu SMP Fri May 7 14:22:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ docker -v
Docker version 20.10.7, build f0df350
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
導入手順
- docker-compose.yml作成
- 
docker-compose up -d実行
- 接続確認 <-- ここでハマる  
docker-compose.yml
version: '3'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.0.4:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:80'
      - '2224:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
- GitLab Docs1記載のdocker-compose.ymlをベースに作成
- 
emvironmentの内容はちゃんと調べてはいないが、見よう見まねで修正
実行・接続確認(ハマりポイント)
上記ymlと同じフォルダにてdocker-composeを実行し、curlで接続できるか確認。
$ docker-compose up -d
$ curl http://localhost:8929
curl: (52) Empty reply from server
何も出てこない…
対応方法
たまたま見つけたページ2にgitlab.rbの設定も必要との記載を発見。
この環境ではdocker-compose upを実行した際に/srv/gitlab/config/gitlab.rbファイルが作成されているので、このファイルに以下の2行を追加。
# external_url 'GENERATED_EXTERNAL_URL'
external_url 'http://192.168.0.4:8929'
############## (中略)#################
# nginx['listen_port'] = nil
nginx['listen_port'] = 80
コンテナ再起動・確認
$ docker-compose stop
$ docker-compose start
$ curl http://localhost:8929
<html><body>You are being <a href="http://localhost:8929/users/sign_in">redirected</a>.</body></html>
$ curl http://192.168.0.4:8929
<html><body>You are being <a href="http://192.168.0.4:8929/users/sign_in">redirected</a>.</body></html>
接続できた!
終わりに
gitbucketはdocker-composeで難なく使えたので甘く見てたら、こちらは予想外に時間がかかった。
docker-compose.ymlだけで起動できるようにしてみたいな。
追記(2021.6.19)
ここまで書いたら気づきそうなものだけれど、ちょっと疲れてたかな。
docker-compose.ymlを以下のように修正すればgitlab.rbは変更不要でした。
version: '3'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.0.4:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
        nginx['listen_port'] = 80                       # この行を追加
    ports:
      - '8929:80'
      - '2224:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
GitLab Docs1 に、以下の通りdocker-compose.ymlにgitlab.rbの設定を記載できる旨記述があったんですが完全に見落としてました。
GITLAB_OMNIBUS_CONFIGの値として設定を書けとのことです。(複数設定は改行コードで区切る)
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com'
        # Add any other gitlab.rb configuration here, each on its own line  ← この部分
あと、いろんなとこで書いてますがdocker-compose up -dを実行してから接続できるようになるまで時間がかかるので、のんびり待つのが吉です。
- 
『GitLab Docker images - Install GitLab using Docker Compose』GitLab Docs ↩ ↩2 
- 
obel氏 『GitLab を docker-compose で起ち上げ、アドレスを「IPアドレス:ポート番号」にするとき』 約束の地(2018.4.30) ↩