我正在运行一个 docker 容器,其中有一个 python 应用程序在 host='0.0.0.0' 上监听,端口为 5050。 当我在 localhost:5000 卷曲我的主站点时,它返回正确的结果。当我 curl localhost:5050 时,它返回
curl: (56) Recv failure: Connection reset by peer
这是我的构建文件
FROM ubuntu:20.04
RUN apt update
RUN apt install -y python3-pip
# Install Dependencies
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
COPY search_api.py .
COPY search/ search
ENV DEBUG 0
CMD [ "gunicorn", "--workers", "2", "--threads", "1", "-b", "0.0.0.0:5050", "--timeout", "400", "search_api:app"]
我已经验证容器正在运行,这些是我返回的日志
[2021-05-29 17:00:43 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2021-05-29 17:00:43 +0000] [1] [INFO] Listening at: http://0.0.0.0:5050 (1)
[2021-05-29 17:00:43 +0000] [1] [INFO] Using worker: sync
[2021-05-29 17:00:43 +0000] [9] [INFO] Booting worker with pid: 9
[2021-05-29 17:00:43 +0000] [10] [INFO] Booting worker with pid: 10
我没有在 CPanel 或任何东西中注册为应用程序的文件夹。在安装 docker 和 docker-compose 后,我基本上只是拉了存储库。然后我继续构建,然后运行容器。这个容器在我本地工作,但似乎我的网络服务器没有监听它?
如果有人对此有任何了解,请帮忙!
答案 0 :(得分:0)
到目前为止我发现它与docker访问的IP地址有关
[root@host etc]# sudo ip addr show docker0
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:de:53:79:21 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:deff:fe53:7921/64 scope link
valid_lft forever preferred_lft forever
docker 访问的 IP 地址是 172.17.0.1,这对我来说不是 localhost。我希望它是因为它会让它变得更容易。 我现在可以在拨打 172.17.0.1:5050 时访问该应用程序,所以这是一个创可贴的解决方案。我将尝试找到一种方法来代替这个本地主机。