0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker for macでgitlab-ceのコンテナを作るときにハマった話

Last updated at Posted at 2020-02-11

概要

Dockerのgitlab-ce公式イメージを使ってローカルにgitlabサーバを立てた際にハマった話です
公式サイトのdocker-composeの項目の通りに進めたが、環境特有の問題が発生していました。
https://docs.gitlab.com/omnibus/docker/#install-gitlab-using-docker-compose

環境

  • OS:MacOS 10.14.6(Mojave)
  • Docker ver:19.03.5, build 633a0ea
  • gitlab-ce Image:gitlab/gitlab-ce:12.6.4-ce.0

起きたこと1

コンテナを起動した後、ブラウザからlocalhostで当たってみても502エラー画面になって先に進めません。
導入系の記事はだいたい特に設定変えなくても普通に使えるみたいなこと書いてあるのに。。

スクリーンショット 2020-02-21 1.37.26.png

原因

結局、MacOSかつファイルシステムがHFS+かつdocker-composeで立ち上げたときだけ、gitlabコンテナ内のunicornで必要なソケットファイルを作れなかったという不思議な現象でした。
https://gitlab.com/gitlab-org/omnibus-gitlab/issues/3196

unicornはrailsで一般的なhttpサーバ用のミドルウェア的のようです。(gitlabがrails製と初めて知った。。)

対処法

https://gitlab.com/gitlab-org/omnibus-gitlab/issues/3444#note_76084668
このissueの通り、コンテナ内/etc/gitlab/gitlab.rbunicorn['socket']を独自の短いパスにしてgitlab-ctl reconfigureしたら無事にアクセスできるようになりました
※docker-compose.ymlで指定してコンテナ作り直してもOKです

スクリーンショット 2020-02-21 1.51.07.png (最初はrootユーザのパスワード設定画面)

起きたこと2

その後ユーザ作成してログインし、プロジェクトを作成しようとしたところ、今度はプロジェクトの作成実行時に503エラーになってプロジェクトを作れませんでした。

スクリーンショット 2020-02-21 1.43.25.png

原因

今回もgitlab-ctl tailでエラーを見ていたら、今度はgitalyのソケットファイル名が長すぎるとな。

time="2020-01-25T15:36:17Z" level=fatal msg="load config" config_path=/var/opt/gitlab/gitaly/config.toml error="socket could not be created in /var/opt/gitlab/gitaly/internal_sockets: listen unix /var/opt/gitlab/gitaly/internal_sockets/test-53d27540.sock: bind: file name too long"

対処法

gitla.rbのgitaly['internal_socket_dir']を適当に短く変えてまたgitlab-ctl reconfigureしたらプロジェクト作れるようになりました。
エラーに記載のある/var/opt/gitlab/gitaly/config.tomlを変えてもreconfigureしたときにgitlab.rb側が優先されるので意味ないみたいです。

スクリーンショット 2020-02-21 1.57.49.png

起きたこと3

作成したプロジェクトをcloneしようとしたら、ドメインがgitlab.example.comになっており、それではcloneができません。(何かが「起きた」訳ではない)
これはdocker-cimpose.ymlに記載したexternal_urlが反映されている訳ですが、ホストOSの/etc/hostsにIPとドメインを書けば解決するはず、と思っていました。

原因

どうやらdocker for macはホストOSからコンテナへのIPアドレスでのアクセスが不可能らしいです。
公式が「The docker (Linux) bridge network is not reachable from the macOS host.」って宣言してます。
https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds

対処法

公式は不可能と言っているもののsock proxyをうまく使えば回避ができるようです。
https://github.com/docker/for-mac/issues/2670
ただ、貼ってあるdocker imageのパスが404になっていて、個人的に最優先ではなかったのでまだ試せていません。
この筋で調べると色々と出てくるので多分解決できるんだと思う。
ネットワーク周り知識不足で怖いので、複数のコンテナを同時に立ち上げて色々したくなったら検討します。

参考サイト

  • 一番下に困ったときのエラーの見方が書いてあり、最初どうやって調べていいかもわからなかったので助かった。
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?