python - 如何在 Docker 上使用 mysql 设置 Django?
问题描述
我是 DevOps 的新手,我正在尝试 Dockerize 我的 Django-Mysql 连接。我的 Docker 文件如下所示:-
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /docker_dir
WORKDIR /docker_dir
ADD . /docker_dir/
RUN pip install -r requirements.txt
我的 docker-compose.yml 文件如下所示:-
version: '3'
services:
db:
image: mysql
restart: always
command: --default-authentication-plugin=mysql_native_password --mysqlx=0
environment:
- MYSQL_HOST=127.0.0.1
- MYSQL_PORT=3306 # cannot change this port to other number
- MYSQL_DATABASE=cgi_assignments # name you want for the database
- MYSQL_USER="root" # change to whatever username you want
- MYSQL_PASSWORD="root" #change to the password you want for user
- MYSQL_ROOT_PASSWORD="root" #change to good root password
ports:
- "3307:3306"
volumes:
- .setup.sql:/docker-entrypoint-initbd.d/setup.sql
web:
build: .
# command: python manage.py runserver 0.0.0.0:8000
command: python manage.py runserver 0.0.0.0:8000
container_name: docker_dir
volumes:
- .:/docker_dir
ports:
- "8000:8000"
depends_on:
- db
links:
- db
我在 Django 设置文件上的数据库如下所示:-
DATABASES = {
'default': {
'NAME': 'cgi_assignments',
'ENGINE': 'django.db.backends.mysql',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'db',
'PORT': 3306,
},
}
如果我使用端口:-“3307:3306”,它会给我以下错误:-
django.db.utils.OperationalError: (1130, "Host '172.18.0.3' is not allowed to connect to this MySQL server")
我使用端口:-“3306:3306”它给了我以下错误:-
listen tcp 0.0.0.0:3306: bind: address already in use
解决方案
删除卷配置对我有用。
推荐阅读
- raspberry-pi - 使用 ACR122U 的 libnfc 或 nfcpy 问题
- node.js - 无法使用节点/反应以正确格式获取 blob 数据
- bluetooth - Bluez 无法永久连接到蓝牙 LE 遥控器“功能未实现 (38)”
- r - 如何在 R 中创建包含条件 if 语句的垂直条形图?
- linux - Linux中目录的权限继承
- reactjs - TypeError:无法读取未定义 Nextjs 的属性“地图”?
- c++ - C++ 中的 C。是 C 还是 C++?
- reactjs - 在 create-react-app 应用程序中代理请求
- java - Google Protobuf 处理空值
- c# - 为表“Tarefas”指定了多个标识列。每个表只允许一个标识列错误