docker

【GitLab】IP・ポート番号のURLで使用する方法(docker)

GitLabのプロジェクトページでクローンのURLがローカルIPになっている例

想定する読み手

  • 自サーバ(ローカル環境)でGitLab(ce)を使用したい人
  • docker環境が既にあり、最低限の操作はできる状態の人
  • 22とか80とかのウェルノウンポートでGitLabを使いたくない人
  • GitLabページでcloneのURLをコピーするとgitlab.example.comに飛んでイラっとしたことがある人

前提条件

今回の環境

  • ホストマシン:macOS
  • docker:Docker Desktop for Mac
  • GitLab:gitlab/gitlab-ce:14.10.3-ce.0
  • ホストのIP:192.168.10.102
  • ポートフォワード設定
    • HTTP(80) –> 50080
    • SSH(22) –> 50022

今回は上記の設定例でコマンド等を記載します。
IP・ポート番号は、ご自身で設定される環境に合わせて適宜置換してください。

GitLab環境を新規作成する場合

実行手順(コマンド)

①GitLabのコンテナを作成

sudo docker run --detach \
--hostname gitlab.example.com \
--publish 50080:50080 --publish 50022:22 \
--name gitlab \
--restart always \
-v gitlab_config:/etc/gitlab \
-v gitlab_logs:/var/log/gitlab \
-v gitlab_data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:latest

※HTTPの方は、50080:50080、SSHの方は50022:22(コンテナ側は22固定)と設定するので注意です。


②コンテナにログイン

sudo docker exec -it gitlab /bin/bash


③/etc/gitlab/gitlab.rbを編集

vi /etc/gitlab/gitlab.rb

30行目くらいにexternal_urlの設定があるので使用するIP/ポートのURLを記載します。
(httpsの場合はhttps://〜で記載します)

# external_url 'GENERATED_EXTERNAL_URL'                                         
external_url 'http://192.168.10.102:50080/'


SSHを使用する場合は以下も併せて変更します。
(600行目くらい)

# gitlab_rails['gitlab_shell_ssh_port'] = 22                                    
gitlab_rails['gitlab_shell_ssh_port'] = 50022


④コンフィグ更新

gitlab-ctl reconfigure

※1~2分かかります

これで設定は完了です。
IP/ポートでログインができ、かつ、 GitLab上の表示もIP/ポートになっているはずです。

おまけ:1コマンドで設定する方法

IP/ポート番号の設定はコンテナ作成時にも指定可能で、以下のように指定することで、1コマンドで設定することも可能です。

sudo docker run --detach \
  --hostname 192.168.10.102 \
  --publish 50080:50080 --publish 50022:22 \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.10.102:50080/';gitlab_rails['gitlab_shell_ssh_port'] = 50022;" \
  --name gitlab \
  --restart always \
  -v gitlab_config:/etc/gitlab \
  -v gitlab_logs:/var/log/gitlab \
  -v gitlab_data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

※コンテナの環境変数として指定しているため、以下の点に注意が必要です。
・設定が永続化されない(コンフィグファイルには保存されない)
・変更する場合はコンテナを作り直す必要がある。

GitLabを既に使用している場合

既にGitLabコンテナを動かしている場合、コンテナを作り直す方法が一番簡単です。

通常はコンテナ作成時に-v/--volumeでホストのディレクトリをマウントしているので、コンテナを作り直してもデータが消えることはありません。

※万が一に備えてバックアップは取っておいてください。

バックアップコマンド: docker exec -t <container name> gitlab-backup create


つまり、コンテナ停止と削除のコマンドが発生するだけで、後は新規作成時と同じです。

実行手順(コマンド)

①コンテナ停止
docker stop <コンテナ名>

(コンテナの停止を確認してから)
②コンテナ削除
docker rm <コンテナ名>

③コンテナ作成
新規作成時同様

※新規作成時はイメージにgitlab/gitlab-ce:latestと指定しましたが、GitLabバージョンを指定する必要がある場合は適宜読み替えてください。

終わりに

GitLabの画面からcloneのURLをコピーすると毎回gitlab.example.comになってイラっとしていたので、その解決策を今回はまとめてみました。

ローカル環境でGitLabを運用していて、同じイライラを感じている方のお役に立てれば幸いです。

以上です。

参考

コメント

  1. GitLabのバージョンはいくつでしょうか?
    12系でも可能でしょうか?

タイトルとURLをコピーしました