我正在尝试使用 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:”参数,但没有用。
非常感谢任何帮助!