如何解决React Flask应用程序可在Docker容器中运行,但在部署到Cloud Run时会返回404错误
当我将应用程序部署到Google Cloud时,我不知道该怎么办。在这里,我在自己的系统上运行Docker容器:
$ docker run 829c6a550061
[2020-09-01 15:08:37 +0000] [6] [INFO] Starting gunicorn 20.0.4
[2020-09-01 15:08:37 +0000] [6] [INFO] Listening at: http://0.0.0.0:8080 (6)
[2020-09-01 15:08:37 +0000] [6] [INFO] Using worker: threads
[2020-09-01 15:08:37 +0000] [8] [INFO] Booting worker with pid: 8
当我单击“ http://0.0.0.0:8080”时,它将成功启动该网站。当我部署到Cloud Run时,它在末尾给出一个URL,并说“在这样的URL上为100%的流量提供服务”,但是当我单击该URL时,这是404错误。 Cloud Run说默认情况下,该应用程序在8080上监听。我是否缺少某些内容?以下是我的Dockerfile,并附上了Cloud Run日志的屏幕截图。
FROM node:13.12.0-alpine as react-build
WORKDIR /ChessKingsCouncil/react_frontend
RUN mkdir public src
COPY ./react_frontend/public ./public
COPY ./react_frontend/src ./src
COPY ./react_frontend/package.json ./
COPY ./react_frontend/package-lock.json ./
RUN npm install
RUN npm run-script build
FROM python:3.8.2
WORKDIR /ChessKingsCouncil/python_backend
ENV PYTHONPATH "${PYTHONPATH}:/app"
RUN pip install Flask
RUN pip install firebase-admin
RUN pip install gunicorn
RUN pip install termcolor
COPY ./python_backend ./
RUN mkdir build
COPY --from=react-build /ChessKingsCouncil/react_frontend/build ./build
ENV PORT 8080
CMD gunicorn --bind :$PORT --workers 1 --threads 8 app:app
解决方法
似乎您运行的是“ $ docker run 829c6a550061”,它是一个纯docker命令。但是,您部署到Cloud Run可能会观察到不同的行为。在部署到Cloud Run之前,我建议您test the container image locally。另外,似乎尚未安装Web服务器。 Nginx应该作为Web服务器安装以响应HTTP请求。您可以按照此documentation进行Nginx配置。
请注意,默认情况下,容器侦听0.0.0.0:8080,但是文档测试命令的访问端口为9090,运行本地测试命令之前需要container port configuration。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。