django 无法访问 mysql docker compose
Posted
技术标签:
【中文标题】django 无法访问 mysql docker compose【英文标题】:django cant access mysql docker compose 【发布时间】:2020-05-20 15:07:03 【问题描述】:这是我的 docker-compose 文件
version: '3'
services:
djangoSql:
restart: always
network_mode: bridge
container_name: djangoSql
image: mysql
volumes:
- .:/code
environment:
MYSQL_DATABASE: test1
MYSQL_ROOT_PASSWORD: 1234
ports:
- 6044:3306
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 2s
timeout: 20s
retries: 10
web:
build: .
network_mode: bridge
volumes:
- .:/code
ports:
- "8000:8000"
image: django
environment:
WAIT_HOSTS: djangoSql:3306
WAIT_HOSTS_TIMEOUT: 300
WAIT_SLEEP_INTERVAL: 30
WAIT_HOST_CONNECT_TIMEOUT: 30
depends_on:
- djangoSql
links:
- djangoSql:mysql
这是我的错误
django.db.utils.OperationalError: (1045, '无法加载插件缓存_sha2_password: /usr//usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: 无法打开共享对象文件:没有这样的文件或目录')
网址有两个 usr 我不知道为什么
这是 docker 文件
FROM python:3.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD ./wait-for-it.sh /code/wait-for-it.sh
ADD . /code/
CMD ["/code/wait-for-it.sh", "djangoSql:3306", "-t", "6000", "--`","python","manage.py", "runserver", "0.0.0.0:8000"]`
这是require.txt
Django>=2.0,<3.0
djangorestframework
mysqlclient
tensorflow==1.15
setuptools>=41.0.0
pandas
Keras
【问题讨论】:
你的 django docker 镜像是基于什么的? 这是我的要求.txt Django>=2.0,=41.0.0 pandas Keras 是python3.7 这是我的 docker 文件 【参考方案1】:根据mysql official image,你需要在compose文件中将此命令添加到你的mysql服务中:
command: --default-authentication-plugin=mysql_native_password
添加此命令后不要忘记创建一个新的 mysql 镜像容器。
【讨论】:
以上是关于django 无法访问 mysql docker compose的主要内容,如果未能解决你的问题,请参考以下文章
django 无法在 docker-compose 中连接 mysql
无法使用 Django 应用程序从容器连接到 MySQL docker 容器
将 Django 与 Docker 一起使用时出错 - “无法连接到 '127.0.0.1' (111) 上的 MySQL 服务器”)
Django docker 容器无法连接到 mysql 容器,出现错误“无法连接到 'db' (111) 上的 MySQL 服务器”)
Django / Docker-compose:重试数据库连接时:django.db.utils.OperationalError:(2002,“无法连接到'db'(115)上的MySQL服务器”)