我一直在调查相关问题,但找不到正确的解决方案。我所有的路线都在本地工作。但是,当我运行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
答案 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