Приложение Flask, запущенное в Docker, не может найти шаблон - PullRequest
0 голосов
/ 25 декабря 2018

Я разрабатываю несколько микросервисов, и мой внешний интерфейс при запуске с использованием docker-compose для создания внешнего интерфейса и внешнего интерфейса не может найти home.html из папки шаблонов.Когда я запускаю приложение как обычное приложение Flask, оно работает нормально.Эта проблема возникает только при включении Docker.

├── backend
│   ├── app.py
│   ├── Dockerfile
│   └── requirements.txt
├── deployment.yaml
├── docker-compose.yaml
├── frontend
│   ├── app.py
│   ├── Dockerfile
│   ├── requirements.txt
│   └── templates
│       ├── home.html
│       ├── includes
│       │   ├── _formhelpers.html
│       │   ├── _messages.html
│       │   └── _navbar.html
│       └── layout.html
└── README.md

frontend / app.py

from flask import Flask, jsonify, render_template
import requests
import json
import os

app = Flask(__name__)

@app.route("/hello_world")
def hello_world():
be_host = os.getenv('BACKEND_SERVICE_HOST', 'backend')
be_port = os.getenv('BACKEND_SERVICE_PORT', '5000')
url = 'http://{}:{}/hello_world'.format(be_host, be_port)
try:
    res = requests.get(url)
except Exception:
    return "Error with {}".format(url)
dictFromServer = res.json()
return render_template('home.html', msg=dictFromServer['message'])


if __name__=='__main__':
    app.run(debug=True, host='0.0.0.0')

Dockerfile

FROM python:3.6-alpine
WORKDIR /app
COPY requirements.txt /app
COPY app.py /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]

needs.txt

Flask
requests
jsonify

1 Ответ

0 голосов
/ 25 декабря 2018

Вы не скопировали папку шаблонов в ваш докер-контейнер:

...
COPY app.py /app
COPY templates /app/templates
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...