LoginSignup
46
36

More than 5 years have passed since last update.

docker-composeのサービス名にアンダースコアを入れないほうが良いよというお話

Posted at

もしかしたら「当たり前だろヴォケが」的なお話かもですが、個人的にハマったので戒めとして残しておきます。。

何故や

docker-composeのサービス名ってそのまま ホスト名 としてコンテナ間で参照できたりするのですが、ホスト名には アンダースコア を含めちゃイカンのです。

実際にはじかれるケースに遭遇

DjangoをDockerで動かして、別のコンテナからアクセスすると Invalid HTTP_HOST つって怒られました。

version: '2'

services:
  suteki_na_web:
    image: suteki_na_django
    volumes:
      - ./source:/source
    working_dir: /source
    command: ./manage.py runserver 0.0.0.0:8000
    ports:
      - 8000

  hoge_container:
    image: alpine:3.6
    command: wget http://suteki_na_web:8000

調べると ALLOWED_HOST 書けよって言ってる人がたくさんいたんですけど、書いてもさっぱり動かなかったのであれーっと思ってソース読んでみたら、アンダースコア入りのホスト名は弾かれてました。。

# https://github.com/django/django/blob/master/django/http/request.py#L24
host_validation_re = re.compile(r"^([a-z0-9.-]+|\[[a-f0-9]*:[a-f0-9\.:]+\])(:\d+)?$")

ドメイン名としてはOKらしいが...

参考資料に書いてありますが、 ホスト名はNGドメイン名はOK とのこと。
ただDjangoの実装的には弾かれてるので アンダースコアは使わない に統一した方が、余計な事故に合わずに済みそうです。

参考資料

46
36
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
46
36