2018年6月24日日曜日

GitLab の Docker image を使ってみる - サーバ起動から HTTPS 化まで -

環境

  • OS: Windows 10 Pro
  • Docker version 18.03.1-ce, build 9ee9f40
  • docker-compose version 1.21.1, build 7641a569

イメージを取得する

2018/6/24 時点での latest(10.8.4-ce.0) のイメージを使用する。

サーバーを立てる

ボリュームを作成する

docker-compose.yml を作る

docker-compose.yml

はじめの動作確認

めっちゃ初期化処理が走る。

しばらく待った後、 http://localhost/ に接続して、 GitLab が表示されることを確認。

root の初期パスワード設定画面になっているはずなので、設定する。

root のパスワード設定がうまくいかなかった場合

(手順再確認したらうまくいった。再現条件不明)

cannot set first password on gitlab-ce docker image (#35753) · Issues · GitLab.org / GitLab Community Edition · GitLab と同じ状況。

下記 HowTo で、 root のパスワードを更新することで、 root ログインできた。

How to reset your root password | GitLab

ユーザーとプロジェクト作ってこのドキュメントを登録

ユーザーとプロジェクトの作成は割愛。

ok.

ポートを変える

docker-compose.yml を修正

  • environmentGITLAB_OMNIBUS_CONFIG を追加
    • external_url : Web ページ内で、自身へのリンクとして使用される URL を指定。待ち受けポートも、ここで指定されたものに変えてくれる
    • gitlab_rails['gitlab_shell_ssh_port'] : Web ページ内で、自身へ SSH アクセスするための URL として使用されるポートを指定。 SSH の待ち受けポートを変更してくれるわけではない
  • ports を更新
    • “8160:8160” : Docker コンテナの 8160 ポートをホストの 8160 にマッピング
    • “8022:22” : Docker コンテナの 22 ポートをホストの 8022 にマッピング

コンテナ再起動

docker-compose restart gitlab だと docker-compose.yml の修正が反映されなかったので、 stop start した。

動作確認

http://localhost:8160 にアクセスする。

Project -> Detail に書いてある HTTP と SSH の URL に、指定したポートが反映されてることを確認する。

HTTPS 化する

サーバ用の鍵と証明書を作成

ここの通りに作業を行う。

OpenSSL で CA と証明書を作る - mikoto2000 の日記

作成した鍵と証明書をコンテナにコピー

docker-compose.yml を更新

  • external_urlhttps://server_01:8160/ に修正
    • プロトコルを https に修正
    • ここのホスト名と、 /etc/gitlab/ssh に格納した鍵・証明書のファイル名を一致させなければならない(一致させたくない場合は別途設定が必要らしいが未調査)
  • external_url に合わせて hostname を変更
  • nginx['redirect_http_to_https'], nginx['redirect_http_to_https_port'] で、 http 接続してきた人を https にリダイレクトするように設定

コンテナ再起動

docker-compose restart gitlab だと docker-compose.yml の修正が反映されなかったので、 stop start した。

hosts ファイル修正

hosts ファイルに、今回作ったサーバー名を追加。

127.0.0.1 server_01

接続確認

http://server_01/ にアクセスして https にリダイレクトされるのを確認。