Docker SQL - таймаут соединения с SQL
Я пытался решить эту проблему в течение многих дней, но так и не смог решить ее. Я создал образ docker для mssql и django app. Когда я попытался использовать docker-compose, я вижу, что он все еще приводит к той же ошибке, но когда я запускаю в локальном режиме, он работает нормально.
моя системная конфигурация:
microsoft.com/fwlink/?linkid=2099216.
sql-server-db | 2021-10-09 13:44:28.18 Server The licensing PID was successfully processed. The new edition is [Express Edition].
2021-10-09 13:44:28.89 Server Microsoft SQL Server 2017 (RTM-CU26) (KB5005226) - 14.0.3411.3 (X64)
Aug 24 2021 09:59:15
Copyright (C) 2017 Microsoft Corporation
Express Edition (64-bit) on Linux (Ubuntu 16.04.7 LTS)
errorlogs:
Exception in thread django-main-thread:
web_1 | Traceback (most recent call last):
web_1 | File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
web_1 | self.connect()
web_1 | File "/usr/local/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
web_1 | return func(*args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 197, in connect
web_1 | self.connection = self.get_new_connection(conn_params)
web_1 | File "/usr/local/lib/python3.8/site-packages/sql_server/pyodbc/base.py", line 312, in get_new_connection
web_1 | conn = Database.connect(connstr,
web_1 | pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
вот мои требования.txt есть ли что-то, что я пропустил для установки
requirements.txt
asgiref==3.4.1
click==8.0.1
colorama==0.4.4
Django==2.1.15
django-mssql-backend==2.8.1
# django-pyodbc-azure==2.1.0.0
django-pyodbc-azure-2019==2.1.0.0
djangorestframework==3.12.4
Flask==2.0.1
itsdangerous==2.0.1
Jinja2==3.0.1
MarkupSafe==2.0.1
mssql-django==1.0
pyodbc==4.0.32
pytz==2021.1
sqlparse==0.4.2
Werkzeug==2.0.1
dockerfile
FROM python:3.8
ENV PYTHONUNBUFFERED 1
WORKDIR /code
#before install pyodbc , we need unixodbc-dev
# RUN apt-get install multiarch-support
# install msodbcsql17
# RUN su
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN exit
RUN wget http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1.4_amd64.deb
RUN apt-get install ./multiarch-support_2.27-3ubuntu1.4_amd64.deb
RUN apt-get update
# RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
# RUN 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
# RUN source ~/.bashrc
# optional: for unixODBC development headers
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
RUN apt-get install -y unixodbc-dev
#before install pyodbc , we need unixodbc-dev
# RUN apt-get install unixodbc-dev
# RUN curl https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.8.1.1-1_amd64.sig
# bin ~/Downloads
# RUN curl http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1.4_amd64.deb
# RUN apt-get install ./multiarch-support_2.27-3ubuntu1.4_amd64.deb
# RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
RUN apt-get update && apt-get install -y --no-install-recommends \
unixodbc-dev \
unixodbc \
libpq-dev
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
Я создал сетевой мост для приложения и базы данных, но все та же ошибка сохраняется, поэтому я закомментировал ее. Я пробовал все возможные способы с 4 дней
docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "8010:8000"
volumes:
- .:/code
command: python manage.py runserver 0.0.0.0:8000
depends_on:
- sql-server-db
# networks:
# app_net:
# ipv4_address: 192.168.1.3
sql-server-db:
container_name: sql-server-db
image: mcr.microsoft.com/mssql/server:2017-latest
environment:
SA_PASSWORD: "Password@123"
ACCEPT_EULA: "Y"
MSSQL_PID: "Express"
ports:
- 1433:1433
# networks:
# app_net:
# ipv4_address: 192.168.1.2
volumes:
- ./data:/var/opt/mssql/data
# networks:
# app_net:
# ipam:
# driver: default
# config:
# - subnet: "192.168.1.0/16"
# gateway: 192.168.1.1
settings.py
DATABASES = {
"default": {
"ENGINE": "sql_server.pyodbc",
"NAME": "dbnew",
"USER": "",
"PASSWORD": "",
"HOST": "localhost",
"PORT": "",
"OPTIONS":
{
"driver":"ODBC Driver 17 for SQL Server",
},
},
}