Docker-composeでGitLabをぱぱっと構築する
唐突ですが身の回りでこんなファイルがありませんか?
hogehoge_20211009.txt hogehoge_20211009_old.txt hogehoge_20211012.txt hogehoge_20211012(佐藤確認済).txt
現代ではドキュメントのバージョン管理が必須の時代になりました。
それでも往々にして上記のようなクソ管理が横行しています。
これを駆逐するためにバージョン管理ツールを使用するわけですが、
WordやExcelで作られた非プレーンテキストな文章を無理やりGitで管理しようと思うと
GitHubのようにWebからぽいっと更新できたほうが便利です。
(むしろ上のような管理をする人はこれぐらい手軽じゃないとやってくれません)
セキュリティ上、クラウドサービスにデータを置きたくないという場合もあると思います。 そこで自身でホスティングできるGitHubクローンのGitLabを Docker-composeを使ってお手軽スピード構築していきます。 *1
準備
今回はLinux (Ubuntu)で環境構築を前提に進めていきます。 GitLabは結構リソースを喰うのである程度のスペックのマシンを用意してください。 起動時点で消費RAMは4GBを超えます。
Docker, Docker-composeの導入
これらの導入は公式を参照してください。
docs.docker.com docs.docker.com
docker-compose.yml の作成
参考: https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/docker/docker-compose.yml
GitLabが公開してるファイルを少しいじります。 適当な場所に以下の内容でdocker-compose.ymlを作成します。
gitlab: image: 'gitlab/gitlab-ee:latest' restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.xxx.zzz:8085' nginx['listen_port'] = 80 ports: - '8080:80' - '2222:22' volumes: - GITLAB_config:/etc/gitlab - GITLAB_logs:/var/log/gitlab - GITLAB_data:/var/opt/gitlab
IPアドレスやポートフォワードの設定は各自自由に設定してください。 ボリュームに関しては次で紹介します。
ここではGITLAB_OMNIBUS_CONFIG: に nginx[listen] = 80
を追加しています。
これがないとブラウザからアクセスできません。
データの永続化を行う
バージョンアップなどでコンテナの再生成が必要になった際、リポジトリデータを消すわけには行かないので データの永続化を行います。
永続化には大まかに
- ボリュームを作成するボリュームマウント
- ホストのディレクトリを直接バインドするバインドマウント
がありますが、今回はできる限りホスト側での管理をなくしたいので ボリュームマウントを使用します。
先程docker-compose.ymlで指定したボリューム3つ (今回は GITLAB_config, GITLAB_logs, GITLAB_data)を作成します。
$ docker volume create GITLAB_config GITLAB_config $ docker volume create GITLAB_logs GITLAB_logs $ docker volume create GITLAB_data GITLAB_data
実行
コンテナの生成、起動
起動は docker-compose up
するだけです。(バックグラウンドオプション -d
はお好みで)
manace@ubuntu-srv:~$ docker-compose up -d
gitlab_gitlab_1 ... DONE
初回はGitLabコンテナ(1GB超え)のダウンロードがはいるのでいっそう時間がかかります。
冒頭で紹介した通りGitLabは結構重いWebアプリケーションです。
コンテナのup直後に docker ps
でSTATUSを見ると
Up 5 minutes (health: starting)
となってまだ起動中であることがわかります。
第4世代i3程度の性能だと途中で STATUSがunhealthyとなるぐらいには重いです。 healthyになるまで待ちましょう。
GitLabの設定
rootパスワードの設定
早速docker-compose.ymlで設定したアドレス
http://192.168.xxx.zzz:8080
にアクセスすると
本来は初回アクセス時にrootパスワードの設定画面が出るようですが、私の環境下では出ませんでした。
ネット上ではrailsのコンソールから強制的にDBに登録されたパスワードを変更するという手法が紹介されていますが
/etc/gitlab/initial_root_password
にrootの初期パスワードが記載されていることが判明したので、
コンテナに入りパスワードを確認します。
*2
manace@ubuntu-srv:~$ docker exec -it gitlab_gitlab_1 bash root@gitlab:/etc/gitlab# root@gitlab:/# cd /etc/gitlab/ root@gitlab:/etc/gitlab# ls gitlab-secrets.json initial_root_password ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub gitlab.rb ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key trusted-certs root@gitlab:/etc/gitlab# root@gitlab:/etc/gitlab# cat initial_root_password # WARNING: This value is valid only in the following conditions # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run). # 2. Password hasn't been changed manually, either via UI or via command line. # # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password. Password: onh3cCPyUZBt+1yb2aY7og6TUqpQYKJ2fLJQ5zjbE18= # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours. root@gitlab:/etc/gitlab# exit
ここでは Password: onh3cCPyUZBt+1yb2aY7og6TUqpQYKJ2fLJQ5zjbE18=
がパスワード部分です。
こちらを入力すると
無事GitLabが使用できるようになりました!
あとは設定からrootパスワードを変更してお好みに設定してください。
いちおうGitLabは日本語を選べますが翻訳率は40%弱程度なので、
日本語欲しさにGitBucketではなくGitLabを選んだ方はご注意を。