Колба с докером, возвращающим 404 на всех маршрутах, кроме root - PullRequest
0 голосов
/ 21 ноября 2018

Я изучал связанные вопросы, но не смог найти правильного решения этой проблемы.Все мои маршруты работают локально.Тем не менее, когда я запускаю docker-compose up для контейнерирования моего приложения, мое приложение запускается, но все маршруты, за исключением корневого маршрута «hello world», возвращают ошибку 404.

Я попытался установить "SERVER_NAME" в app.config и добавить дополнительный "/" к URL-адресам моего маршрута, как и другие посты, но безрезультатно.

Любые предложения о том, какисправить это?

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 голосов
/ 21 ноября 2018

Вам необходимо смонтировать папку с исходным кодом в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...