如何在 docker 堆栈中按名称引用容器?

时间:2021-05-15 17:04:52

标签: docker docker-compose docker-swarm

我正在尝试使用 docker swarm 上的 docker-compose 文件部署一个简单的 Django/Postgress 应用程序(两个容器在不同的虚拟机上运行)。但是,当我尝试使用容器名称(例如,设置 Django 与数据库的连接)在两者之间建立连接时,我似乎无法使用容器名称。例如,如果我尝试从 Django 容器运行迁移,则无法识别数据库容器的主机名。

这是我的 docker-compose.yml

version: '3.7'
services:
  db:
    image: postgres:10
    environment:
      POSTGRES_DB: "random"
      POSTGRES_USER: "random"
      POSTGRES_PASSWORD: "random"
  app:
    image: "app_server"
    build:
      context: ./app_server
    links:
      - db
    environment:
      DATABASE_URL: 'psql://random:random@db:5432/random'

这是Django的settings.py中的数据库连接配置

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.postgresql_psycopg2',

        'NAME': 'random',

        'USER': 'random',

        'PASSWORD': 'random',

        'HOST': 'db',

        'PORT': '5432',

    }

}

有没有办法让 Django 应用程序自动识别数据库服务的 IP?

我尝试在服务配置中使用“name:”参数,但没有用。

非常感谢任何帮助!

0 个答案:

没有答案