前回:DockerでVMへのリバースプロキシ
これはそろそろDockerを使えるようになりたい筆者の試行錯誤の軌跡です。
gitlabをVMからDockerコンテナへ移行
前回は、既存のVMサーバー群にDockerのnginxからリバースプロキシしました。
今回は、VMサーバー群のアプリケーションのうち、gitlabをDockerコンテナに移行して、Developを閉じます。
いきなり閑話休題 便利!docker-compose
試行錯誤する中で、何度もコンテナの再作成を行いました。
最初はコンテナ起動コマンドをメモしておいて、ターミナルにペーストしていましたが、
nginxのコンテナとgitlabのコンテナ両方でそんなことするのはかったるいです。
このときにやっとdocker-composeの便利さを理解し、使えるようになりました。
docker-composeとは、イメージや起動オプションをテキストベースで管理するアプリケーションです。
docker-compose.ymlファイルに複数コンテナの起動設定を記述しておくと、
以降はコマンド一つでそれらコンテナの一斉起動、一斉停止、一斉削除等ができるようになります。
version: '3'
services:
deploy:
image: nginx
restart: always
ports:
- 80:80
- 443:443
volumes:
- /home/fclef/docker/server/deploy/nginx/ssl:/etc/nginx/ssl
- /home/fclef/docker/server/deploy/nginx/conf:/etc/nginx/conf.d
- /home/fclef/docker/server/deploy/nginx/params:/etc/nginx/params
- /home/fclef/docker/server/deploy/letsencrypt:/etc/letsencrypt
- /home/fclef/docker/server/deploy/content/html:/usr/share/nginx/html
- /home/fclef/docker/server/deploy/script:/tmp/script
gitlab:
image: gitlab/gitlab-ce:latest
restart: always
ports:
- 50080:80
- 50443:443
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost'
volumes:
- /home/fclef/docker/server/gitlab/config:/etc/gitlab
- /home/fclef/docker/server/gitlab/logs:/var/log/gitlab
- /home/fclef/docker/server/gitlab/data:/var/opt/gitlab
depends_on:
- deploy
大まかな手順
- gitlabのバックアップ
- gitlabコンテナの起動
- gitlabのリストア
これだけなのに、結構かかりました。。
gitlabのバックアップ
参考先に書いてあるとおりですが、
# gitlab-rake gitlab:backup:create
で/var/opt/gitlab/backups
にアプリケーションデータのバックアップを作成し、
/etc/gitlab
下の設定ファイル達を移行しやすいように圧縮しておくだけです。
コンテナの起動
参考:GitLab Docs - GitLab Docker images
割愛。
イメージはgitlab/gitlab-ce:latest
としました。(→エラーになりました。)
リストア
できません。
エラーになります。
バックアップ元のバージョンが12.0.3だったのに、latest(13.2.4)にしようとしたため、
バージョン飛びすぎでエラーになりました。
エラー解消
13.2.4にするためには、一旦13.0.x系にする必要があります。
そして、13.0.x系にするには、12.x.x系の最新にする必要がありました。
よって、以下の手順を取りました。
- 12.0.3のイメージでコンテナを起動し、リストア
- 12.10.14のイメージでコンテナを再作成→起動時にデータがバージョンアップされる
- 13.0.12のイメージでコンテナを再作成→起動時にデータがバージョンアップされる
- latest(13.2.4)のイメージでコンテナを再作成→起動時にデータがバージョンアップされる
とりあえずこれでDockerコンテナでgitlabが稼働し始めました。