GitLab CE をインストールしよう! (Docker Image 編)
GitLab Advent Calendar 2016 ももう 11 日目ですね。
四日目は omnibus package を使って GitLab をインストールしました。今回は、公式 Docker Image を使って Docker Engine にインストールする方法を紹介します。
GitLab CE/EE は公式で omnibus package をインストール済みの Docker Image が提供されており、とても簡単にセットアップができます。
さらに! Docker for Mac や Docker for Windows を使えば、Mac や Windows でも GitLab CE を動かすことができます!
インストールの前に
Install Docker Engine を参考に Docker Engine をセットアップしてください。
また、Docker Compose を使ってインストールする場合は、合わせて Install Docker Compose を参考にセットアップしてください。
インストール
GitLab CE のインストール
インストール方法は GitLab Docker images にまとまっています。
ですが、そのままインストールしようとしても、ほとんどの場合ローカルのウェブサーバーや SSHD とポート番号がバッティングしてしまいます。
私の場合は、GitLab CE のインストールのたびに新しい Docker Machine を用意するようにしています。それでも SSH のポートはバッティングするのですが、テスト用のインストールということで諦めています。
$ docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
しばらくセットアップが行われますので、お茶でも飲んで数分ほど待ちましょう!
この後は http://192.168.42.xxx にアクセスしてください。ローカルの Docker Engine を使っている場合は http://localhost でアクセスできると思います。
その後の操作は omnibus package と同様です。
設定を変更する場合は、以下のコマンドを実行します。
$ docker exec -it gitlab vim /etc/gitlab/gitlab.rb
設定を反映して再起動するには、以下のコマンドを実行します。
$ docker exec -it gitlab gitlab-ctl reconfigure
docker exec
を使う必要があること以外は omnibus packages の設定方法と何ら変わりません。
GitLab Mattermost/Container Registry のインストール
前回 と同じように GitLab Mattermost/Container Registry もインストールしてみましょう!
$ docker exec -it gitlab bash -c "echo mattermost_external_url \'http://mattermost.example.com\' >> /etc/gitlab/gitlab.rb"
$ docker exec -it gitlab bash -c "echo registry_external_url \'http://registry.example.com\' >> /etc/gitlab/gitlab.rb"
$ docker exec -it gitlab gitlab-ctl reconfigure
/etc/hosts
ファイルに名前を登録します。(ローカルの Docker Engine の場合は、IP Address に 127.0.2.1 を使えばいいと思います)
192.168.42.xxx gitlab.example.com mattermost.example.com registry.example.com
これで、http://mattermost.example.com や http://registry.example.com でアクセスできるようになります!
使った環境を捨てるには、docker rm
コマンドを使います。
$ docker rm --force gitlab
Docker Compose を使ってインストールする
Docker Compose を使うと、こういった設定を YAML ファイルに書いておいて、毎回同じように GitLab CE の Docker Container を起動できるので非常に便利です。
社内の GitLab CE の管理者をされている方は、テスト用に何度も GitLab CE のインストールをすると思います。すごく役に立ちます。
gitlab.rb
ファイルの代わりに環境変数 GITLAB_OMNIBUS_CONFIG
に書くことができます。Docker Compose でインストールする場合はこちらのほうがいいと思います。
私はこういう docker-compose.yml
を用意しておいて...
version: '2'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.$DOMAIN'
mattermost_external_url 'http://mattermost.$DOMAIN'
registry_external_url 'http://registry.$DOMAIN'
ports:
- '80:80'
- '443:443'
volumes:
- '/srv/$DOMAIN/config:/etc/gitlab'
- '/srv/$DOMAIN/logs:/var/log/gitlab'
- '/srv/$DOMAIN/data:/var/opt/gitlab'
Docker Compose を使って起動します。
$ docker-compose pull
$ DOMAIN=example.com docker-compose up -d
またお茶でも飲んで、アクセスできるまで待ちましょう。
ちょっと残念なのですが、そのままでは GitLab Mattermost がうまく使えず... gitlab-ctl reconfigure
は実行しなければいけないようです。
$ docker-compose exec gitlab gitlab-ctl reconfigure
これで GitLab Mattermost まで使えるようになりました!
最後に
GitLab Docker Image を使うと、omnibus package でのインストールより手軽にインストールできます。
Docker Machine と Docker Compose を組み合わせると、GitLab CE をたくさん起動できます。
私は、以前は GitLab CE をインストールするたびに Ubuntu の仮想化環境を用意していましたが、最近はこの方法に切り替えました。手軽にインストールできて、手軽に破棄できるので非常に便利です。