【发布时间】:2021-11-16 23:46:28
【问题描述】:
您好,我想在每个容器中连接 django - mysql :)
我尝试了很多方法,但都失败了..
这是我的 mysql docker-compose.yaml
version: "3"
services:
db:
platform: linux/x86_64
image: mysql:5.7
container_name: good-mysql
ports:
- "3307:3306"
environment:
- MYSQL_ROOT_PASSWORD=test
- MYSQL_DATABASE=testdb
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- /Users/Shared/data/mysql-test:/var/lib/mysql
network_mode: bridge
我用的是mysql官方镜像
还有我的 django Dockerfile
FROM ubuntu:18.04
FROM python:3.8.6-buster
ENV PYTHONUNBUFFERED 1
# General Packages
RUN apt-get update \
&& apt-get install -y libmariadb-dev \
&& apt-get install -y python3-pip \
&& apt-get install -y build-essential \
&& apt-get install -y libcurl4-openssl-dev \
&& apt-get install -y libssl-dev \
&& pip install --upgrade pip
RUN mkdir -p /project/myproject
COPY ./myproject /project/myproject
RUN mkdir -p /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD tail -f /dev/null
和 docker-compose.yaml
version: '3.8'
services:
deepnatural-ai-api:
build: .
image: deepnatural-ai-api:latest
container_name: deepnatural-ai-api
ports:
- 1000:1000
external_links:
- "good-mysql:db"
network_mode: bridge
我运行docker-compose up -d每个容器
并访问 mysql 容器,运行 mysql -uroot -p 它的工作!
但是当我访问 django 容器运行迁移时,它会引发错误
"Unknown MySQL server host 'db' (-2)")
我的 django settings.py 是
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'...',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'testdb',
'USER': 'root',
'PASSWORD': 'test',
'HOST': 'db',
'PORT': '3306',
'OPTIONS': {'auth_plugin': 'mysql_native_password'},
}
}
ROOT_URLCONF = 'myproject.urls'
DEFAULT_AUTO_FIELD='django.db.models.AutoField'
STATIC_URL = '/static/'
INTERNAL_IPS = [
'127.0.0.1',
'0.0.0.0',
]
我仔细检查了 docker 网络、数据库主机名、密码、数据库名称等...
但 django 找不到数据库主机“good-mysql”
请给点建议谢谢:)
编辑:
当我运行docker ps
我尝试更改HOST: "good-mysql"
【问题讨论】: