Rancher2.0 の Gitlab を docker-compose での管理に移行する

# はじめに
以前[Rancher2.0でGitlabを導入した](https://othlotech.hatenablog.com/entry/2018/08/22/180000) のですが、結局管理する人は限られている、かつ1ホストで動いているのでdocker-composeを使ったほうが管理が楽なのではと感じてきました。「少しは管理が楽になるのではないかという淡い期待」は裏切られました。

Docker imageは、Rancher2.0のときと同じく `gitlab/gitlab-ce` を使います。

まず、現在 `/opt/gitlab/` `/log/gitlab/` `/etc/gitlab/` にマウントしているファイルをコピーしてマウントしてみます。
下記のような docker-compose.yml を書きました。

```dockerfile:docker-compose.yml
version: "3"
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    ports:
      - "10080:80"
    volumes:
      - /mnt/gitlab/gitlab/data:/var/opt/gitlab
      - /mnt/gitlab/gitlab/config:/etc/gitlab
      - /mnt/gitlab/gitlab/log:/var/log/gitlab
```

# 権限エラー
しかし、このまま `docker-compose up` すると permission error で怒られます... :cry: 

起動時に表示される、下記のコマンドでなそうとするものの直らず...

```
docker-compose run gitlab update-permissions
```

ググると、以下のページが見つかりました。ページに書いてあるとおりに、コマンドを実行してみます。
https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2976

```
docker-compose run gitlab chmod -R 2770 /var/opt/gitlab/git-data/repositories
```

コマンドを実行すると、このエラーは直ったみたいです。

# Prometheusのエラー
しかし、さらにエラーを吐かれます。
調べてみると、どうやらPrometheusのエラーです。GitlabではPrometheusというモニタリングサービスが動いているようです。
https://docs.gitlab.com/ce/administration/monitoring/prometheus/index.html

```
2018-12-05_08:09:22.10898 time="2018-12-05T08:09:22Z" level=error msg="Error creating HTTP client for job "kubernetes-cadvisor": unable to use specified CA cert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: open /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: no such file or directory" source="scrape.go:121" 
2018-12-05_08:09:22.10898 time="2018-12-05T08:09:22Z" level=error msg="Cannot create Kubernetes discovery: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory" source="discovery.go:86" 
2018-12-05_08:09:22.10899 time="2018-12-05T08:09:22Z" level=error msg="Error creating HTTP client for job "kubernetes-nodes": unable to use specified CA cert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: open /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: no such file or directory" source="scrape.go:121" 
2018-12-05_08:09:22.10900 time="2018-12-05T08:09:22Z" level=error msg="Cannot create Kubernetes discovery: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory" source="discovery.go:86" 
2018-12-05_08:09:22.10901 time="2018-12-05T08:09:22Z" level=error <img width="785" alt="Screen Shot 2018-12-05 at 5.46.49 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/100996/248fb337-3be7-9ef4-20c0-624496549290.png">
msg="Error creating HTTP client for job "kubernetes-pods": unable to use specified CA cert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: open /var/run/secrets/kubernetes.io/serviceaccount/ca.crt: no such file or directory" source="scrape.go:121" 
```

Kubenetes環境でうごいているときには、クラスタのノードとポットからメトリックを収集するようです。（Rancher2.0にはKubernetesが使われてます。）
今回は無効にしたいので、ドキュメントのとおり、`gitlab.rb` を書き換えます。 コメントは外してください。

```
prometheus [ 'monitor_kubernetes' ] = false
```

# 動いた :pray: :pray: 
`docker-compose up -d` すると動きました。
<img width="785" alt="Screen Shot 2018-12-05 at 5.46.49 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/100996/44667a60-8ed1-1003-e9ee-cbcc99d3a738.png">

## 追記：データベースの移行に失敗してた
500エラーを返すようになるので、ログを見たらデータベースのエラーだった。Rancher2.0のpodのコンソールでバックアップを作成して、docker-composeのほうでリストアしたら、今のところは普通に動いています。
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore