Mysql Django无法连接到数据库。
我正在尝试使用docker为我公司的应用程序创建一个开发环境。出于某种原因,如果我使用Mysql Django无法连接到数据库。,mysql,django,docker,environment-variables,Mysql,Django,Docker,Environment Variables,我正在尝试使用docker为我公司的应用程序创建一个开发环境。出于某种原因,如果我使用docker运行web“bash”然后从shell运行mysql,我就能够连接到数据库,但是Django不会连接。web/worker节点的Dockerfile如下所示: FROM python:2.7 ENV PYTHONUNBUFFERED 1 ENV DOCKER 1 ENV REDIS_HOST "redis" ENV CASSANDRA_HOST "cassandra" RUN mkdir /code
docker运行web“bash”
然后从shell运行mysql
,我就能够连接到数据库,但是Django不会连接。web/worker节点的Dockerfile如下所示:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
ENV DOCKER 1
ENV REDIS_HOST "redis"
ENV CASSANDRA_HOST "cassandra"
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install --default-timeout=100 numpy==1.9.1
RUN pip install --default-timeout=100 scipy==0.15.1
RUN pip install --default-timeout=100 -r requirements_docker.txt
#RUN python /code/app/manage.py migrate
docker compose文件如下所示:
version: "2"
services:
cassandra:
image:
cassandra:latest
redis:
image:
redis:latest
db:
image: mysql
environment:
MYSQL_DATABASE: appdb
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpass
web:
build: .
command: python app/manage.py runserver 0.0.0.0:8000
environment:
DOCKER: 1
DATABASE_HOST: db
DATABASE_NAME: appdb
DATABASE_USER: dbuser
DATABASE_PASSWORD: dbpass
REDIS_HOST: redis
CASSANDRA_HOST: cassandra
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
- redis
- cassandra
worker:
build: .
environment:
DOCKER: 1
DATABASE_HOST: db
DATABASE_NAME: appdb
DATABASE_USER: dbuser
DATABASE_PASSWORD: dbpass
REDIS_HOST: redis
CASSANDRA_HOST: cassandra
command: python /code/app/manage.py celery worker -Q celery,offline,periodic --broker=redis://redis:6379/4
depends_on:
- db
- redis
- cassandra
最后,数据库设置是(从多个设置文件合并):
奇怪的是,即使运行python manage.py migrate
返回一个错误(django.db.utils.OperationalError:(2003,“无法连接到'db'(111)”上的MySQL服务器)
)使用命令mysql-h$database\u HOST-u$database\u USER-p$database\u PASSWORD$database\u NAME
django设置中可能会出现什么问题?MySQL默认端口为
3306
,因此更改:
'PORT': '5432',
到
它确实可以手动使用您的
mysql
命令,因为该命令默认使用正确的端口您是否尝试过直接将主机设置为db
,而不使用env变量?作为备用。。。将所有这些ENV添加到一个语句中,以避免无用的层。跑步也一样。
'PORT': '5432',
'PORT': '3306',