【发布时间】:2020-02-26 18:02:43
【问题描述】:
我正在阅读here 的一篇文章,它是关于使用 docker、django 和 mysql 一起设置项目的。
这些是我在项目中的文件:
Dockerfile
FROM python:3.7
MAINTAINER masoud masoumi moghadam
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
ADD . /app
ADD requirements.txt /app/requirements.txt
RUN pip install --upgrade pip && pip install -r requirements.txt
Docker-compose
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py runserver 0.0.0.0:8000"
environment:
- DB_HOST=localhost
- DB_NAME=contact_list
- DB_USER=root
- DB_PASS=secretpassword
depends_on:
- db
db:
image: mysql:5.7
environment:
- MYSQL_DATABASE=contact_list
- MYSQL_USER=root
- MYSQL_PASSWORD=secretpassword
要求
Django>=2.0,<3.0
djangorestframework<3.10.0
mysqlclient==1.3.13
django-mysql==2.2.0
还有我的setting.py中的这个设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': os.environ.get('DB_HOST'),
'NAME': os.environ.get('DB_NAME'),
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASS')
}
}
当我使用docker-compose build 时,我没有遇到任何问题,一切都很好。然后我运行service mysql start。我可以确保 mysql 服务正在运行并且可以正常工作,因为我可以访问数据集。当我使用此命令docker-compose run app sh -c "python manage.py makemigrations core" 进行迁移时出现问题,我收到此错误:
django.db.utils.OperationalError: (2002,
"Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)")
当我将 localhost 更改为 127.0.0.1 时,我收到此错误:
django.db.utils.OperationalError:
(2002, "Can't connect to MySQL
server on '127.0.0.1' (115)")
我花了 20 个小时寻找这些技术的最佳配置,但我仍然无法弄清楚任何事情。我也使用了 python-alpine,但我仍然找不到它对项目有用,因为当我尝试执行 docker build 时,我遇到了相同的 mysql 依赖问题。有没有人有同样的经历?如果您能在这里帮助我,我将不胜感激。
【问题讨论】:
标签: python mysql django docker-compose dockerfile