我尝试以下方法来完成: 使用 docker 映像连接到 Windows 计算机上的 loacl sql 服务器。 我面临的问题是没有成功连接,我在不同配置下遇到的主要错误是:
sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
我尝试过:
设置:
SQLALCHEMY_DATABASE_URL = (
"mssql+pyodbc://user_name:[email protected]:1433/db_name"
"?driver=ODBC+Driver+17+for+SQL+Server"
)
engine = create_engine(
SQLALCHEMY_DATABASE_URL,
echo=True,
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Docker 文件: Odbc 安装驱动程序来自: 微软驱动安装
#
FROM python:3.11.1
#
WORKDIR /code
#
COPY ./requirements.txt /code/requirements.txt
RUN curl https://packages.microsoft.com/keys/microsoft.asc > /etc/apt/trusted.gpg.d/microsoft.asc
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Debian 11
RUN curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
#RUN ACCEPT_EULA=Y apt-get install -y mssql-tools
#RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
#RUN source ~/.bashrc
# optional: for unixODBC development headers
RUN apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributions
RUN apt-get install -y libgssapi-krb5-2
#
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
#
COPY ./app /code/app
#
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "5001"]
docker 构建成功,我运行它:
docker run -d --name container_name -p 1433:1433 dockerhub_name/image_name:latest
容器运行了几秒钟,然后说:
sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
我认为这是一个网络问题,但无法解决问题:S 我试图遵循的主要提示也是: 七月份的问题
@J.C. 的回答。格拉斯
使用“host.docker.internal”而不是本地主机解决了我的问题