我有一个docker-compose.yml,它为开发定义了一个数据库和API映像,但我也有一个单独的Dockerfile,它为AWS部署构建API。为了在部署之前进行本地测试,我希望用docker-compose调出db映像,然后将API可部署映像连接到这个数据库实例。这是失败的,因为django.db.utils.OperationalError: (2005, "Unknown MySQL server host ''db'' (-2)")表示主机名不存在。
下面是相关的docker-compose.yml文件:
version: '3.7'
services:
db:
image: mysql:5
volumes:
- type: bind
source: ./db/docker-entrypoint-initdb.d
target: /docker-entrypoint-initdb.d
- type: volume
source: mysql-data
target: /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: toor
networks:
- backend
ports:
- '3306:3306'
volumes:
mysql-data:
networks:
backend:启动API可部署映像的命令是:docker run -p 80:80 --env-file .env --network='<app>_backend' <image>
使用Django数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}我的.env文件是:
RDS_DB_NAME='django'
RDS_USERNAME='root'
RDS_PASSWORD='toor'
RDS_HOSTNAME='db'
RDS_PORT=3306我需要配置什么东西才能使DNS在这里正常工作,或者有什么可能出错?
发布于 2020-02-23 23:27:52
感谢@Zeitounator的链接,删除了.env中的所有引文,解决了我的问题。
这些语法规则适用于.env文件:
新.env
RDS_DB_NAME=django
RDS_USERNAME=root
RDS_PASSWORD=toor
RDS_HOSTNAME=db
RDS_PORT=3306https://stackoverflow.com/questions/60367710
复制相似问题