想定する読み手
- 自サーバ(ローカル環境)で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を運用していて、同じイライラを感じている方のお役に立てれば幸いです。
以上です。
参考
- GitLab公式ドキュメント
コメント
GitLabのバージョンはいくつでしょうか?
12系でも可能でしょうか?