У меня есть docker-compose.yml
, который определяет базу данных и образ API для разработки, но у меня также есть отдельный Dockerfile
, который создает API для AWS развертывания. Для локального тестирования перед развертыванием я хочу вызвать образ базы данных с docker-compose
, а затем подключить развертываемый образ 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 для правильной работы здесь или что может быть не так?