GitLabをDockerで構築する

はじめに

ここ数年業務でGitLab使ってますが、gitとかCIとか機能を全然使いこなせてないなと感じていました。 色々試してみたいとは思いつつ、誤ってcommit消してしまったり、ぶっ壊したらどうしようかなとかビビってできませんでしたので、じゃあ、自分で壊してもいい環境作って使い方勉強しようかな?と思いました。今回はその構築したときの手順をまとめておきます。

留意事項

  • 自分用のメモのため、詳しいことは本家GitLab - Docsを参照してください

前提条件

  • メールの設定は行いません。
  • SSL/TLSの設定も行いません。
  • docker composeを利用して起動するようにします。

構築環境

今回構築は仮想環境を用意し、本環境上でDocker Imageを利用してGitLabを起動します。 用意した環境は下記の通りです。

  • ハードウェア
項目 備考
OS Ubuntu 18.04
CPU 4 core 本家推奨は4core以上
MEM 4 GB 本家によるとは4GB以上必須
  • ソフトウェア
項目 備考
Docker Compose 1.25.5

GitLab とは

  • Web型のGitリポジトリマネージャー。GitHubのようなソースコード管理や課題管理(issue)はもちろんのこと、DevOpsライフサイクル全体をカバーするアプリケーションです。ライセンスはMIT Licenseです。利用方法はGitLabのホスティングサービスをするか、オンプレミスorクラウド環境にインストールして利用する方法があります。無料版と有料版があります。

手順

利用するDocker Imageはオムニバスのものを利用します。
構築手順は以下の通り。

  1. 環境変数 GITLAB_HOME を設定
  2. docker-compose.ymlを作成

     web:
       image: 'gitlab/gitlab-ee:13.9.6-ee.0'
       restart: always
       hostname: '${自分のホスト名}'
       environment:
         GITLAB_OMNIBUS_CONFIG: |
           external_url 'http://${自分のホスト名}'
           # Add any other gitlab.rb configuration here, each on its own line
       ports:
         - '80:80'
         - '2022:22'
       volumes:
         - '$GITLAB_HOME/config:/etc/gitlab'
         - '$GITLAB_HOME/logs:/var/log/gitlab'
         - '$GITLAB_HOME/data:/var/opt/gitlab'
    
  3. 起動

# docker-compose up -d
  • アクセスできるようになるまで結構時間がかかりますので待ちます。

あとがき

Docker Image使って建てればあっという間でしょ!と思ってはじめましたが、あまり考えずにやったら繋がらない、起動しないと無駄にハマってしまいました。。 色々調査しましたが詳細はわからず、結局のところVMのスペックを推奨・要求スペックまであげ、1から入れ直したら正常起動しました。。(自分しか使わないから推奨・要求スペックの半分で大丈夫だろとか考えてたのがいけなかったです。) 一応遭遇したエラーを下記に記載しておきます。

  • ブラウザでアクセスしてもGitLabにたどり着けない

待てども待てどもアクセスできるようにならず、docker logを確認したところ下記メッセージが。

There was an error running gitlab-ctl reconfigure:

database_objects[postgresql] (postgresql::enable line 148) had an error: RuntimeError: postgresql_user[gitlab] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/database_objects.rb line 19) had an error: RuntimeError: execute[create gitlab postgresql user] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/postgresql/resources/user.rb line 11) had an error: RuntimeError: Exhausted service checks and database is still not available

PostgresSQLが利用できるようになってないとかエラーが出ておりました。コンテナ内でプロセス確認したところ起動はしているようでしたが、なんでこんなことになってたのかわかりませんでした。この現象はコンテナ再起動しても改善せず、GITLAB_HOME に指定しているディレクトリのデータ全消しして再作成、コンテナ起動したらでなくなりました。

  • Grafanaのエラー

パフォーマンスメトリクスの可視化とかできる機能らしいです。それがエラーになってました。

Error executing action `run` on resource 'ruby_block[authorize Grafana with GitLab]'

参考

  1. GitLab日本語情報サイト
  2. GitLab - Docs
  3. Qiita - GitLab をインストールしよう! (Docker Image)