Docker for Windows に GitLab CE をインストールする
ちょっとはまったので備忘録。
TL;DR
コンテナにホストのファイルシステムをマウントして使おうとするとうまくいかない事がある (パーミッション問題?) ので、そのような時は volume を作ってそっちにマウントする。
GitLab の設定
Docker for Windows は Ver.18.09.2 を使用。
GitLab の Docker イメージは offical ( gitlab/gitlab-ce ) を利用します。
Docker Compose のファイル を落としてきてマウント先をホストの任意のディレクトリに設定。起動しようとすると下記のようなエラーが出ます。
Error executing action
run
on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data]'
これの回避の仕方が下記の Issue に記載されています。
ここでの結論は "/var/opt/gitlab" のマウント先をホストではなく volume を作成してそちらにマウントする、でした。
おそらくこちらの記事と同じ理由。
実際やってみると初期化まではうまくいきますが、ユーザーの ssh 公開鍵の登録がうまくいきませんでした。ので "/etc/gitlab" も volume を作成してマウントしてみると公開鍵の登録も成功し、 git push も ssh で通るようになりました。 (これはもしかしたら関係ないかも)
ログ ("/var/log/gitlab") は今のところ問題なかったのでホストにマウントさせています。
別件で最近の GitLab のイメージは Let's Encrypt を使うようになっているとのことなのですが、ローカルで使うには不要なのでオプションで無効化しています。
volume の作成:
> docker volume create gitlab-data > docker volume create gitlab-config
Docker Compose:
version: "3" services: web: image: 'gitlab/gitlab-ce:latest' restart: always hostname: '{PC名}' environment: GITLAB_OMNIBUS_CONFIG: | external_url '{URL}' letsencrypt['enable'] = false ports: - '80:80' - '443:443' - '22:22' volumes: - 'gitlab-config:/etc/gitlab' - '{ホストへのログ保存先}:/var/log/gitlab' - 'gitlab-data:/var/opt/gitlab' volumes: gitlab-data: external: true gitlab-config: external: true