docker在除root以外的所有路径上返回404的烧瓶

时间:2018-11-21 04:49:21

标签: python python-3.x docker flask docker-compose

我一直在调查相关问题,但找不到正确的解决方案。我所有的路线都在本地工作。但是,当我运行docker-compose up来容器化我的应用程序时,我的应用程序将启动,但是除根“ hello world”路由以外的所有路由均返回404错误。

我尝试在app.config中设置“ SERVER_NAME”,并像其他帖子所建议的那样在我的路线网址上附加一个额外的“ /”,但无济于事。

关于如何解决此问题的任何建议?

app / app.py

@app.route("/")                        # <-- this route works
def hello_world():
    return "Hello, world!"

@app.route("/test", methods=["POST"])  # <-- this one doesn't
def test():
    return "Test POST route"

if __name__ == "__main__":
   app.run(host="0.0.0.0", port=5000)

Dockerfile:

FROM tiangolo/uwsgi-nginx-flask:python3.6

COPY requirements.txt /

WORKDIR /

RUN pip install -r ./requirements.txt --no-cache-dir

COPY app/ /app/

WORKDIR /app

ENV FLASK_APP=app.py
ENV FLASK_ENV=production
CMD flask db upgrade && python app.py

docker-compose.yml

version: '3'
services:
web:
  build: .
  ports:
    - "5000:5000"
env_file:
 - .env

1 个答案:

答案 0 :(得分:0)

您需要将源代码文件夹安装在docker compose中,而不是dockerfile中,否则,每次代码更改时都需要重新构建映像。在docker compose中,您可以使用volume属性来执行此操作。您可以在这里https://docs.docker.com/compose/compose-file/

了解更多信息

示例


version: '3'
services:
web:
  build: .
  ports:
    - "5000:5000"
env_file:
 - .env
volumes:
 - ./app:/app