我正在开发一个python flask应用程序,必须通过隧道进入不同的机器才能访问我们的数据库。当在没有docker的情况下运行应用程序时,我没有问题,一切都很好。但是,当我在容器中运行应用程序时,我会遇到以下错误:
sshtunnel.BaseSSHTunnelForwarderError: Could not establish session to SSH gateway
我的图像Dockerfile是:
FROM python:3.11.7-slim
WORKDIR /monitoring
COPY ./requirements.txt ./requirements.txt
RUN python3 -m venv venv
RUN . venv/bin/activate
RUN pip install --no-cache-dir -r requirements.txt
RUN apt-get update && \
apt-get install -y openssh-client
COPY ./app ./app
COPY ./.env ./.env
EXPOSE 5000
ENV FLASK_APP=app/main.py
CMD ["flask", "run"]
我是否必须采取进一步的步骤才能使容器内的应用程序能够通过SSH隧道连接到外部?我在网上查了一下,没有找到关于这样一个问题的资源。你知道我该往哪里看吗?
经过进一步调查,我发现了这一点(我将记录器传递给SSHTunnelForwarder):
INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_8.0)
INFO:paramiko.transport:Authentication (publickey) failed.
这毫无意义,因为我提供的是相同的ssh私钥,而且它在容器之外工作。