Docker VPS 适用于 HTTP,但不适用于 HTTPS

问题描述 投票:0回答:1

我正在尝试在 VPS (apache) 内托管来自 Docker 容器的 Flask Rest API。它与

http
配合使用正常,但与
https
配合使用则不起作用。

Dockerfile

FROM python:3.11-alpine
# Virtual envs not needed inside container
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
COPY . /app
RUN python3 -m pip install -r /app/requirements.txt

EXPOSE 5000
CMD ["flask", "--app=app", "run", "--host=0.0.0.0"]

运行

$ docker run --rm -it -p 8080:5000 myapp:latest
让我可以在 Postman 上运行
http://myapphostwebsite.com:8080/user/12345
。然后我可以检索数据,但是当使用
https://myapphostwebsite.com:8080/user/12345
时,我收到了这个 Postman 错误:

Error: write EPROTO 5543930632:error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER:../../../../src/third_party/boringssl/src/ssl/tls_record.cc:242:

Docker 日志给出了这个

code 400, message Bad request version ('À\x13À') \x16\x03\x01\x00ü\x01\x00\x00ø\x...

我不知道该怎么办。如何使用 https 访问外部的 Docker 容器?

PS:我使用

Certbot
在我的 VPS 上设置 SSL

docker apache http https vps
1个回答
0
投票

这是因为Alpine镜像默认没有安装CA证书。您可以按照以下步骤解决此问题:

apk add --no-cache ca-certificates
© www.soinside.com 2019 - 2024. All rights reserved.