我正在使用tutum来部署一个涉及web和db的应用程序。 这里是tutum.yml文件的相关部分。
db: image: 'postgres:latest' ports: - '5432:5432' restart: always volumes_from: - data web: image: 'rchamarthi/djangoweb:latest' command: 'bash -c ''python manage.py makemigrations && python manage.py migrate && /usr/local/bin/gunicorn django_project.wsgi:application -w 2 -b :8000''' expose: - '8000' links: - db restart: always volumes: - /usr/src/app/static working_dir: /usr/src/app/
由于web有一个链接到数据库,IAM期待“数据库”主机的详细信息被添加到Web容器的/ etc / hosts文件,但我什么也没有看到。
在Web容器中
# cat /etc/hosts 172.17.0.50 web-1 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
在DB容器中
# cat /etc/hosts 172.17.0.49 db-1 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
因此,来自Web容器的数据库连接失败。
根据https://support.tutum.co/support/solutions/articles/5000012181-service-links,“Tutum维护一个由所有容器自动使用的DNS服务来parsing主机名,如本文所述”。 据推测,这不是主机文件的安排,这可能是更难的tutumdynamic操纵。 即DNS可以在一个中心点更新而不用重新启动所有引用它的容器。
您还可以使用可用于查找链接服务的环境variables,但请注意, http : //docs.docker.com/userguide/dockerlinks/build议不要依赖这些variables来更新容器重新启动。