You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker-Compose部署Flask容器无法访问问题求助(Linux环境)

解决Docker Compose部署Flask容器无法访问的问题

问题背景

作为Docker新手,尝试使用docker-compose运行两个返回Hello-World的Flask容器,将容器5000端口分别映射到主机5000和5001端口。执行sudo docker-compose up后容器显示正常启动,但访问http://127.0.0.1:5000或http://127.0.0.1:5001时提示“This site can’t be reached”。已配置的文件如下:

Dockerfile

FROM python:3.7
COPY app.py /app/
WORKDIR /app/
RUN pip3 install Flask
CMD ["python", "app.py"]

app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
        return "Hello-World"
if __name__ == "__main__":
        app.run(host="0.0.0.0", debug=True)

docker-compose.yml

version: '3'
services:
  flask1:
    image: imgflask
    build: .
    ports:
      - "5000:5000"
  flask2:
    image: imgflask
    build: .
    ports:
      - "5001:5000"

镜像构建命令:

sudo docker build -t imgflask .

排查与解决步骤

1. 确认容器内部服务状态

进入运行中的容器,检查Flask是否在0.0.0.0:5000正常监听:

# 查看运行容器ID
sudo docker ps
# 进入容器(替换<container_id>为实际ID)
sudo docker exec -it <container_id> bash
# 安装netstat并检查端口监听
apt update && apt install -y net-tools
netstat -tulpn | grep 5000

若输出显示python进程监听0.0.0.0:5000,则容器内部服务正常;否则检查Flask安装状态或app.py执行逻辑。

2. 检查主机端口占用

验证主机5000/5001端口是否被其他程序占用:

# 检查5000端口
sudo lsof -i :5000
# 检查5001端口
sudo lsof -i :5001

若有进程占用,关闭对应进程或修改docker-compose.yml中的主机端口(如改为5002:5000)。

3. 验证Docker端口映射生效

查看容器端口映射配置:

sudo docker inspect <container_id> | grep -A 10 "Ports"

确认输出中存在"5000/tcp": [{"HostPort": "5000"}](flask1)或"5000/tcp": [{"HostPort": "5001"}](flask2),说明映射配置生效。

4. 调整防火墙规则

若主机启用防火墙(如ufw),开放对应端口:

sudo ufw allow 5000/tcp
sudo ufw allow 5001/tcp
sudo ufw reload

云服务器用户需额外检查服务商安全组是否开放5000/5001端口。

5. 更换访问地址测试

本地环境可尝试用http://0.0.0.0:5000或http://localhost:5000访问;远程服务器需使用公网/局域网IP而非127.0.0.1。

6. 清理缓存重新构建

镜像缓存可能导致配置未更新,重新构建并启动:

sudo docker-compose down
sudo docker-compose build --no-cache
sudo docker-compose up

内容的提问来源于stack exchange,提问作者Hartk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:05:43