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服务器”)

构建 docker-compose 映像时无法连接到 MySQL