Docker DesktopによるGitLab構築方法の紹介です。
一応、初心者向きにはなっていますが、
Dockerの基礎知識は知っている前提の記事です。
Windows + Docker Desktop (旧版 Docker for Windowsでも可)で構築します。
Windowsでも動けば、Mac/Linux等でも動くでしょう。
Windows固有のハマりポイントはマウントの設定でしょうか
Dockerは気づくとITエンジニアほぼ必須の知識になってしまいました。
正直ここまで広まるとは思っていませんでした。
一部環境ではVT-x(インテル 仮想化支援機構)がONにするのを許されていなくて、
手元でDocker使えない、不便だーなんてことが起きてますが、
その場合はあきらめて開発サーバーを建てましょう(わたしもご多分に漏れず…)。
Docker使う場合は基本的にはLinuxがベターではあります。
とはいえどういうわけか手元にはWindowsマシン(Windows 10 Pro Edition)しかないみたいなときとか役に立つかと。
この記事について
docker-composeにてサクッとGitLabを立ててみようという記事です。
ただ、デフォルトのままではメール設定どうすんの?
とかWindowsの場合、ちょっとハマりがあったりとか、
そもそも遅いとか言った問題があるかと思います。
GitLabで使うデフォルトはPostgreSQLです。
https://docs.gitlab.com/omnibus/settings/database.html
こだわりがなければこのまま使います。
ちなみに、Dockerを使っている人はご存知かと思いますが、
Docker内のデータは一度止めてしまうと基本的にすべて消えてしまいます。
そのために、ホスト側にデータ領域をマウントし、再起動時にそこから読むことで永続化を行っています。
前提条件
私の環境は以下です。多少異なっていてもおそらく大丈夫かと思います。
かなり古い場合でなければ、特にDocker for Windowsでも大丈夫かと。
OS/ソフト | バージョン |
---|---|
Windows 10 | 1903 |
Docker Desktop community | 2.2.0.4 |
設定方法
Docker Desktopおよびホスト側の設定
Settings > Resources > File Sharing でCドライブを選びます
docker volume の作成
Windowsでは起動時に権限がらみのエラーが発生してしまうので、
マウントするのに名前付きボリュームを利用します。
docker volume ls
でその一覧があとで参照できます。
実際にどこにマウントされているかはDocker DesktopのDashBoardのコンテナのInspectから参照することもできます。
docker-composeの設定
ドキュメント(Documents)ディレクトリ配下
%USERPROFILE%\Documents
にdocker\gitlab
というフォルダを作り、そこにdocker-compose.yml
を作成します
今回はPostgreSQL使用、
メールはGmail使用
としました。
この辺りの設定(GITLAB_OMNIBUS_CONFIG [/etc/gitlab/gitlab.rb])は
gitlab-ctl reconfigure
で設定できる内容です(詳細割愛)。
GitLab的にはGmailは非推奨のようですが、例として使いやすいのでGmailで説明します。
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md
下記に示した内容をいくつか置き換えて社内メール等を設定すれば環境構築できるかと思います。
大抵のケースの場合SMTP周りの設定をしておけばいいと思われます。
version: "3.6" services: web: image: 'gitlab/gitlab-ce:latest' restart: always hostname: '127.0.0.1' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://127.0.0.1:8929' gitlab_rails['gitlab_shell_ssh_port'] = 50022 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.gmail.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_domain'] = "smtp.gmail.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['smtp_user_name'] = "<your gmail address>" gitlab_rails['smtp_password'] = "<your passowrd>" # Gitlab tuning unicorn['worker_processes'] = 2 unicorn['worker_timeout'] = 600 postgresql['shared_buffers'] = "512MB" ports: - '8929:8929' - '50022:22' volumes: - 'gitlab_config:/etc/gitlab' - 'gitlab_log:/var/log/gitlab' - 'gitlab_data:/var/opt/gitlab' volumes: gitlab_config: external: true gitlab_log: external: true gitlab_data: external: true
1点注意事項があります。 2段階認証プロセスを使っている場合、あれれ?メールが飛ばないなんてことがあります。
Gmail を使って Net::SMTPAuthenticationError が出力される場合の解決法 https://karur4n.hatenablog.com/entry/2015/03/07/234600
この場合上記に従い、アプリパスワードを使います。
社内メールを使用する場合
仕事で使う場合は、社内メールだと思いますので
doc/settings/smtp.md · master · GitLab.org / omnibus-gitlab · GitLab
あたりの設定が参考になるのではないでしょうか。
パフォーマンスチューニングについて
GitLabは結構マシンパワーを要求するのでpostgresql['shared_buffers']
を大きめにとったほうが良いかと思います。
できれば2GB以上あったほうがサクサク動きます。
unicorn['worker_processes']
も多いほど良いです。
名前付きボリュームの作成
コマンドプロンプトにて初回のみ
docker volume create --name gitlab_config docker volume create --name gitlab_data docker volume create --name gitlab-logs
として名前付きボリュームを作成します。
サーバー立ち上げ
コマンドプロンプトにて
cd %USERPROFILE%\Documents docker-compose up -d
で起動します。
立ち上がりはマシンによっては遅いのでカップラーメンを食べながら待ちます。
Dockerのタスクトレイ内のアイコンを右クリックして、
Dashboardにアクセスすると、起動状態が確認できます。
GitLabにアクセス
しばらくたつと、
http://127.0.0.1:8929/
にアクセスします。
初回はroot
のパスワードを求められます。
ユーザを作成した時にメールが飛べば成功です。
あとは煮るなり焼くなり。
GitHub同様使いやすいかと思います。
参考リンク
https://docs.gitlab.com/omnibus/docker/
https://mikoto2000.blogspot.com/2018/06/gitlab-docker-image-https.html
https://myamada9999.hatenablog.com/entry/2018/11/04/204613
https://qiita.com/TomoyukiSugiyama/items/b17800d4e142e3dc549b
https://qiita.com/comefigo/items/2066dd02e2a0f3b470ca
チューニング系参考リンク
http://www.sakutyuu.com/technology/?p=1979
https://qiita.com/k_nakayama/items/9f083a4700915d02104a
名前付きボリューム関連
https://tan-y.hatenablog.com/entry/2019/02/26/003000
https://mikoto2000.blogspot.com/2018/06/gitlab-docker-image-https.html
Docker Desktopのマウント問題
https://qiita.com/kikako/items/7b6301a140cf37a5b7ac
https://stackoverflow.com/questions/41036273/disable-autostart-of-docker-compose-project
docker volume削除
https://qiita.com/Ikumi/items/b319a12d7e2c9f7b904d
メール関連
https://h-otter.hatenablog.jp/entry/2015/07/31/220511
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md