Докер django mysql.sock в другом месте - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать контейнер для моего файла django и продолжаю сталкиваться с проблемой: (2006, ’Can\‘t connect to local MySQL server through socket \‘/var/run/mysqld/mysqld.sock\’ (2 “No such file or directory”)

Я узнал позже, что mysql.sock находится в этом месте: /tmp/mysql.sock вместо /var/run/mysqld/mysqld.sock, как мне изменить местоположение для докера, чтобы увидеть /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 для ссылкиЭкземпляр mysql в контейнер

РЕДАКТИРОВАТЬ: я прочитал еще одно переполнение стека, подобное этому, я изменил свой код django на 'HOST': '127.0.0.1' в DATABASES теперь я получаю: (2006, 'Can\'t connect to MySQL server on \'127.0.0.1\' (111 "Connection refused")')

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Если вы хотите подключиться к вашему контейнеризованному серверу MySQL как внутри, так и снаружи контейнера, вам сначала нужно убедиться, что порт сопоставлен с хостом:

services:
  db:
    image: mysql
    ports:
      - "3306:3306"
    ...

Это позволитчтобы получить доступ к MySQL, используя localhost или 127.0.0.1 непосредственно на хост-компьютере.

Если вы хотите иметь возможность запускать Django как в контейнере web, так и на хосте, вам потребуетсяпереопределить настройку DATABASES в зависимости от сценария.Контейнеру web нужно будет использовать значение HOST, равное db, тогда как вашему локальному компьютеру потребуется значение localhost.

.
0 голосов
/ 12 декабря 2018

Ваш хост должен быть дБ.При использовании docker-compose вы обращаетесь к различным серверам по имени их службы.

Итак, в settings.py вы должны иметь:


DATABASES = {
    'default': {
        'HOST': 'db',
         ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...