Docker构建镜像时因启动Flask服务器卡住,如何解决?
问题根源
Dockerfile最后一行用RUN指令启动Flask服务是错误的。RUN是镜像构建阶段执行的一次性命令,执行后会生成镜像层;但Flask服务启动后会持续运行,导致构建过程被永久阻塞,无法完成镜像创建。
解决步骤
将最后一行的RUN替换为CMD指令——CMD是容器启动时触发的命令,不会干扰镜像构建流程。同时建议添加--host=0.0.0.0参数,避免容器内部服务仅绑定127.0.0.1导致外部无法访问。
修改后的Dockerfile:
FROM python:3 WORKDIR /usr/src/app COPY albums ./albums COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt EXPOSE 5000 CMD ["flask", "--app", "albums", "run", "--host=0.0.0.0"]
验证操作
- 重新构建镜像:
docker build -t albums .
- 构建完成后启动容器:
docker run -p 5000:5000 albums
此时Flask服务会在容器启动后正常运行,外部可通过http://localhost:5000访问。
内容的提问来源于stack exchange,提问作者David Pham
相关产品推荐
相关产品推荐

