Колба Docker - jinja2.exceptions.TemplateNotFound: index.html - PullRequest
0 голосов
/ 14 октября 2018

Новичок в докере и пытается запустить приложение MySQL для колб, но получает jinja2.exceptions.TemplateNotFound: index.html.Нет ошибок, если я запускаю python app.py вне докера

Структура каталогов

  -docker-compose.yml
  -app
    -templates
          -index.html
    -app.py
    -Dockerfile
    -requirements.txt
  -db
    -init.sql

docker-compose.yml

version: "2"
services:
  app:
    build: ./app
    links:
      - db
    ports:
      - "5000:5000"

  db:
    image: mysql:5.7
    ports:
      - "32000:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./db:/docker-entrypoint-initdb.d/:ro

Dockerfile

FROM python:3.6

EXPOSE 5000

WORKDIR /app

COPY requirements.txt /app
RUN pip install -r requirements.txt

ENV IN_DOCKER_CONTAINER Yes

COPY app.py /app
CMD python app.py

needs.txt:

Flask==1.0.2
Jinja2==2.10
gunicorn==19.6.0
flask-mysql

часть моего app.py:

@app.route('/')
def index():
    conn = mysql.connect()
    cursor = conn.cursor()
    try:
        query = '''SELECT * from favorite_colors'''
        cursor.execute(query)
        data = cursor.fetchall()
    except Exception as e:
        return str(e)
    finally:
        cursor.close()
        conn.close()
    return render_template('index.html', MyExampleVar=str(data))

1 Ответ

0 голосов
/ 14 октября 2018

Ваш Dockerfile копирует только requirements.txt и app.py в изображение.Для того чтобы dockerized app.py имел доступ к templates и его содержимому, вам также необходимо скопировать templates, добавив строку:

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