正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Dockerコンテナで実行されているGitLabを設定する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

このコンテナは公式のLinuxパッケージを使用しているため、固有の設定ファイル/etc/gitlab/gitlab.rbを使用してインスタンスを設定できます。

設定ファイルを編集する

GitLabの設定ファイルにアクセスするには、実行中のコンテナのコンテキストでShellセッションを開始します。

  1. セッションを開始します:

    sudo docker exec -it gitlab /bin/bash

    または、/etc/gitlab/gitlab.rbをエディタで直接開くこともできます:

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
  2. お好みのテキストエディタで/etc/gitlab/gitlab.rbを開き、次のフィールドを更新します:

    1. external_urlフィールドを、GitLabインスタンスの有効なURLに設定します。

    2. GitLabからメールを受信するには、SMTP設定を設定します。GitLab Dockerイメージには、SMTPサーバーがプリインストールされていません。

    3. 必要に応じてHTTPSを有効にします。

  3. ファイルを保存し、コンテナを再起動してGitLabを再設定します:

    sudo docker restart gitlab

GitLabは、コンテナが起動するたびに再設定が行われます。GitLabのその他の設定オプションについては、設定に関するドキュメントを参照してください。

Dockerコンテナを事前設定する

Dockerの実行コマンドに環境変数GITLAB_OMNIBUS_CONFIGを追加すると、GitLab Dockerイメージを事前に設定できます。この変数は、任意のgitlab.rb設定を含めることができ、コンテナのgitlab.rbファイルが読み込む前に評価されます。この動作により、外部GitLab URLの設定やデータベースの構成、その他Linuxパッケージテンプレートから任意のオプションを作成できます。GITLAB_OMNIBUS_CONFIGに含まれる設定は、gitlab.rb設定ファイルには書き込まれず、読み込む時に評価されます。複数の設定を指定するには、コロン(;)で区切ります。

次の例では、外部URLを設定し、LFSを有効にして、Prometheusに必要な最小shmサイズでコンテナを起動します:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'; gitlab_rails['lfs_enabled'] = true;" \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

docker runコマンドを実行するたびに、GITLAB_OMNIBUS_CONFIGオプションを指定する必要があります。GITLAB_OMNIBUS_CONFIGの内容は、後続の実行では保持_されません_。

パブリックIPアドレスでGitLabを実行する

Dockerで--publishフラグを変更することにより、指定したIPアドレスを使用し、すべてのトラフィックをGitLabコンテナに転送するように設定できます。

IP198.51.100.1でGitLabを公開するには:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
  --publish 198.51.100.1:443:443 \
  --publish 198.51.100.1:80:80 \
  --publish 198.51.100.1:22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

これにより、http://198.51.100.1/およびhttps://198.51.100.1/でGitLabインスタンスにアクセスできます。

異なるポートでGitLabを公開する

GitLabはコンテナ内の特定のポートを使用します。

デフォルトのポート80(HTTP)、443(HTTPS)、または22(SSH)とは異なるホストのポートを使用する場合は、個別の--publishディレクティブをdocker runコマンドに追加する必要があります。

たとえば、Webインターフェイスをホストのポート8929で、SSHサービスをポート2424で公開するには:

  1. 次のdocker runコマンドを使用します:

    sudo docker run --detach \
      --hostname gitlab.example.com \
      --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2424" \
      --publish 8929:8929 --publish 2424:22 \
      --name gitlab \
      --restart always \
      --volume $GITLAB_HOME/config:/etc/gitlab \
      --volume $GITLAB_HOME/logs:/var/log/gitlab \
      --volume $GITLAB_HOME/data:/var/opt/gitlab \
      --shm-size 256m \
      gitlab/gitlab-ee:<version>-ee.0

    ポートを公開する形式はhostPort:containerPortです。受信ポートの公開については、Dockerドキュメントを参照してください。

  2. 実行中のコンテナを入力します:

    sudo docker exec -it gitlab /bin/bash
  3. エディタで/etc/gitlab/gitlab.rbを開き、external_urlを設定します:

    # For HTTP
    external_url "http://gitlab.example.com:8929"
    
    or
    
    # For HTTPS (notice the https)
    external_url "https://gitlab.example.com:8929"

    このURLで指定されたポートは、Dockerがホストに公開したポートと一致する必要があります。また、NGINXリッスンポートがnginx['listen_port']で明示的に設定されていない場合は、代わりにexternal_urlが使用されます。詳細については、NGINXのドキュメントを参照してください。

  4. SSHポートを設定します:

    gitlab_rails['gitlab_shell_ssh_port'] = 2424
  5. 最後に、GitLabを再設定します:

    gitlab-ctl reconfigure

先程の例に従うと、Webブラウザは<hostIP>:8929でGitLabインスタンスにアクセスし、ポート2424でSSHをプッシュすることができます。

Docker Composeセクションで、異なるポートを使用するdocker-compose.ymlの例を確認できます。

複数のデータベース接続を設定する

GitLab 16.0以降、GitLabはデフォルトで、同じPostgreSQLデータベースを指す2つのデータベース接続を使用します。

何らかの理由で、単一のデータベース接続に戻したい場合は:

  1. コンテナ内の/etc/gitlab/gitlab.rbを編集します:

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
  2. 次の行を追加します:

    gitlab_rails['databases']['ci']['enable'] = false
  3. コンテナを再起動します:

    sudo docker restart gitlab

次のステップ

インストールの設定を完了したら、認証オプションやサインアップ制限など、推奨される次の手順を実行することを検討してください。