Dockerコンテナで実行されているGitLabを設定する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
このコンテナは公式のLinuxパッケージを使用しているため、固有の設定ファイル/etc/gitlab/gitlab.rbを使用してインスタンスを設定できます。
設定ファイルを編集する
GitLabの設定ファイルにアクセスするには、実行中のコンテナのコンテキストでShellセッションを開始します。
セッションを開始します:
sudo docker exec -it gitlab /bin/bashまたは、
/etc/gitlab/gitlab.rbをエディタで直接開くこともできます:sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rbお好みのテキストエディタで
/etc/gitlab/gitlab.rbを開き、次のフィールドを更新します:ファイルを保存し、コンテナを再起動して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.0docker 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で公開するには:
次の
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ドキュメントを参照してください。実行中のコンテナを入力します:
sudo docker exec -it gitlab /bin/bashエディタで
/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のドキュメントを参照してください。SSHポートを設定します:
gitlab_rails['gitlab_shell_ssh_port'] = 2424最後に、GitLabを再設定します:
gitlab-ctl reconfigure
先程の例に従うと、Webブラウザは<hostIP>:8929でGitLabインスタンスにアクセスし、ポート2424でSSHをプッシュすることができます。
Docker Composeセクションで、異なるポートを使用するdocker-compose.ymlの例を確認できます。
複数のデータベース接続を設定する
GitLab 16.0以降、GitLabはデフォルトで、同じPostgreSQLデータベースを指す2つのデータベース接続を使用します。
何らかの理由で、単一のデータベース接続に戻したい場合は:
コンテナ内の
/etc/gitlab/gitlab.rbを編集します:sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb次の行を追加します:
gitlab_rails['databases']['ci']['enable'] = falseコンテナを再起動します:
sudo docker restart gitlab
次のステップ
インストールの設定を完了したら、認証オプションやサインアップ制限など、推奨される次の手順を実行することを検討してください。