【问题标题】:Docker: Django + MS SQL + Python 3.6?码头工人:Django + MS SQL + Python 3.6?
【发布时间】:2019-05-14 01:10:59
【问题描述】:

我需要在 Linux Docker 容器上一起设置 Django + MS SQL + Python 3.6。

我运行了官方的Docker Django + PostgreSQL 指南,一切正常,但是当我使用django-pyodbc-azure 驱动程序切换到使用Microsoft SQL Server 2008 作为数据库时,我得到了错误:

本地主机没有发送数据

如果有任何帮助或指导,我将不胜感激。

# 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/

【问题讨论】:

  • 您可能希望在使用 mssql 时考虑许可,尤其是在您要启动一堆这些容器时。我和你在同一条船上(我的工作卡在 mssql 上,至少我们正在升级到 2016)
  • 嗨,丹尼尔。我不想用 mssql 运行容器。我想连接到我可以使用 SQL Server Management Studio 正常访问的已经可用的 SQL Server 实例。有什么想法吗?
  • 明白了。不,我没有。我还没有走那条路。不过,我计划在接下来的几周内完成。我会回来检查你的问题:)

标签: python sql-server django docker dockerfile


【解决方案1】:

你是否通过 8000 端口与 mysql 通信?
如果您这样做,请尝试在数据库配置中指定该端口。 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",
        }
    }
}

您还需要在 docker 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 2017-10-11
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多