M1 arm64架构上的Docker超时错误mssql17连接

发布于 2025-01-11 20:13:10 字数 2154 浏览 2 评论 0原文

您能帮我解决这个问题吗:

我必须说,在 Windows amd64 架构上一切正常 但是当我尝试在arm64 M1上启动docker-compose时,它出错了并产生错误

所以我有这2个Dockerfiles

FROM --platform=linux/amd64 python:3.9-buster as builder

WORKDIR ...

COPY ...

RUN apt-get update && apt-get install -y git g++ libgirepository1.0-dev unixodbc unixodbc-dev pkg-config libcairo2-dev gcc python3-dev

RUN pip install virtualenv &&\
    python -m venv antenv

RUN . antenv/bin/activate &&\
    python -m ensurepip --upgrade &&\
    pip install --upgrade pip &&\
    pip install wheel gobject PyGObject &&\
    pip install -r requirements.txt

FROM --platform=linux/amd64 python:3.9-slim

WORKDIR ...

COPY --from=builder ...

RUN apt-get update && apt-get install curl gnupg -y
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - &&\
    curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list &&\
    apt-get update &&\
    ACCEPT_EULA=Y apt-get install msodbcsql17 mssql-tools -y &&\
    apt-get install -y unixodbc python3-gi gir1.2-secret-1 alembic &&\
    . antenv/bin/activate && pip install gunicorn &&\
    mkdir -p /opt/antenv/nltk_data

EXPOSE 5000

CMD . antenv/bin/activate && alembic -x data=true upgrade head && gunicorn wsgi:app -w 1 --worker-class eventlet --threads 2 --forwarded-allow-ips=* -b 0.0.0.0:5000

和数据库:

FROM --platform=linux/amd64 mcr.microsoft.com/mssql/server:2017-latest

WORKDIR /opt/mssql/

# Bundle config source
COPY ./*.sh /opt/mssql/bin/

RUN chmod +x /opt/mssql/bin/*.sh

ENTRYPOINT ["./bin/entrypoint.sh"]

CMD ["tail -f /dev/null"]

正如你所见我到处都提到它是linux/amd64平台

数据库效果很好,我没有遇到错误 但是当我启动后端时,好像看不到数据库并且出现超时错误

backend  | sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
backend  | (Background on this error at: https://sqlalche.me/e/14/e3q8)

Could you please help me resolve this issue:

I must to say that everything is working fine on Windows amd64 architecture
But when I tried to start docker-compose on arm64 M1 it went wrong and makes the error

So I have these 2 Dockerfiles

FROM --platform=linux/amd64 python:3.9-buster as builder

WORKDIR ...

COPY ...

RUN apt-get update && apt-get install -y git g++ libgirepository1.0-dev unixodbc unixodbc-dev pkg-config libcairo2-dev gcc python3-dev

RUN pip install virtualenv &&\
    python -m venv antenv

RUN . antenv/bin/activate &&\
    python -m ensurepip --upgrade &&\
    pip install --upgrade pip &&\
    pip install wheel gobject PyGObject &&\
    pip install -r requirements.txt

FROM --platform=linux/amd64 python:3.9-slim

WORKDIR ...

COPY --from=builder ...

RUN apt-get update && apt-get install curl gnupg -y
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - &&\
    curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list &&\
    apt-get update &&\
    ACCEPT_EULA=Y apt-get install msodbcsql17 mssql-tools -y &&\
    apt-get install -y unixodbc python3-gi gir1.2-secret-1 alembic &&\
    . antenv/bin/activate && pip install gunicorn &&\
    mkdir -p /opt/antenv/nltk_data

EXPOSE 5000

CMD . antenv/bin/activate && alembic -x data=true upgrade head && gunicorn wsgi:app -w 1 --worker-class eventlet --threads 2 --forwarded-allow-ips=* -b 0.0.0.0:5000

and DataBase:

FROM --platform=linux/amd64 mcr.microsoft.com/mssql/server:2017-latest

WORKDIR /opt/mssql/

# Bundle config source
COPY ./*.sh /opt/mssql/bin/

RUN chmod +x /opt/mssql/bin/*.sh

ENTRYPOINT ["./bin/entrypoint.sh"]

CMD ["tail -f /dev/null"]

As you can see I mentioned everywhere that it is linux/amd64 platform

DataBase is upping good and I don`t get eerors
But when I up Backend, It as if does not see database and I get timeout error

backend  | sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
backend  | (Background on this error at: https://sqlalche.me/e/14/e3q8)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文