Докер: Django + MS SQL + Python 3.6? - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно настроить Django + MS SQL + Python 3.6 вместе в контейнере Docker для Linux.

Я запустил официальное руководство Docker Django + PostgreSQL и все работает нормально, но когда я переключаюсь на использование Microsoft SQL Server 2008 в качестве базы данных, используя django-pyodbc-azure водитель, я получаю ошибку:

localhost не отправил данные

Буду признателен за любую помощь или руководство по этому вопросу.

# settings.py

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'HOST': 'SERVERNAME',
        'NAME': 'DATABASENAME',
        'USER': '',
        'PASSWORD': '',
        'OPTIONS': {
            "driver": "FreeTDS",
            "host_is_server": True,
            "unicode_results": True,
            "extra_params": "tds_version=8.0",
        }
    }
}
# docker-compose.yml

version: '3'

services:
  # db:
  #   image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
# Dockerfile

FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
RUN apt-get update && apt-get install -y \
    unixodbc \
    unixodbc-dev \
    tdsodbc
RUN apt-get install -y freetds-common freetds-bin freetds-dev
ADD odbcinst.ini /etc/
RUN pip install pipenv
COPY Pipfile Pipfile.lock /code/
RUN pipenv install --system
# COPY . /code/

1 Ответ

0 голосов
/ 14 мая 2019

Вы говорите с MySQL через порт 8000?
Попробуйте указать этот порт в конфигурации базы данных, если вы это сделаете. Mysql обычно использует порт 3306, так что, возможно, попробуйте что-то вроде

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'HOST': 'SERVERNAME',
        'NAME': 'DATABASENAME',
        'USER': '',
        'PASSWORD': '',
        'PORT': '3306',
        'OPTIONS': {
            "driver": "FreeTDS",
            "host_is_server": True,
            "unicode_results": True,
            "extra_params": "tds_version=8.0",
        }
    }
}

Вам также нужно будет указать это в вашем докере compose

# docker-compose.yml
services:
  # db:
  #   image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
      - "3306:3306"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...