mysql - 不同位置的 Docker django mysql.sock

标签 mysql django docker containers

我正在尝试将我的 django 文件容器化,但我一直遇到以下问题:(2006, 'Can\'t connect to local MySQL server through socket\'/var/run/mysqld/mysqld. sock\' (2 “没有那个文件或目录”)

后来发现mysql.sock在这个位置:/tmp/mysql.sock而不是/var/run/mysqld/mysqld.sock,怎么办我更改了 docker 的位置以查看 /tmp/mysql.sock

这是我的 docker-composr.yml:

    version: '3'

services:
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somepassword

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

我已按照 mysql docker 网站上的说明将 mysql 实例链接到容器

编辑:我读到另一个与此类似的堆栈溢出,我将我的 Django 代码更改为 DATABASES 中的 'HOST': '127.0.0.1' 现在我得到:(2006, 'Can\'t connect to MySQL server on\'127.0.0.1\' (111 "Connection refused")')

最佳答案

你的主机应该是db。使用 docker-compose 时,您可以通过服务名称对不同的服务器进行寻址。

因此,在 settings.py 中,您应该:


DATABASES = {
    'default': {
        'HOST': 'db',
         ...
    }
}

关于mysql - 不同位置的 Docker django mysql.sock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53748145/

相关文章:

docker - Kafka Connect- worker 是否需要彼此直接沟通

docker - Endorser客户端连接失败: connection refused Error

mysql - 我想从声明为 varchar 类型的 S_ID 列中获取最大值

MySQL时间戳/日期默认值

php - MySQL SELECT 查询只返回一行

python - 如何从列表中生成组合 Q 对象?

php - 在 Google 日历中插入事件 PHP 和 SQL

django - 如何复制 Django 多态对象?

python - 带有 Django 的 Bootstrap 4 无法正确显示

docker - 为什么我在 docker 容器内的多解决方案 asp.net-core 应用程序中找不到 MSBuild