Приложение Docker Flask загружает изображения несколько раз - PullRequest
0 голосов
/ 16 июня 2019

My Docker Flask App загружает изображения несколько раз. Страница загружается очень медленно, потому что она делает несколько одинаковых запросов. Я вижу это в Chrome Dev Tools Networks. Приложение отлично работает в моей среде разработки. Я очень новичок в Докере.

Я думаю, что это связано с настройками IP и порта. Я пробовал несколько вариантов каждой настройки IP / порта с небольшим успехом. Либо я не могу найти свое приложение по любому адресу, либо оно работает, но несколько раз перезагружает изображения и работает очень медленно.

Настой:

from grocery import create_app
app = create_app()
if __name__ == '__main__':
    app.run(host ='0.0.0.0', debug=False)

Dockerfile:

FROM python:3.6.8-slim
WORKDIR /app
COPY . /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 80
ENV NAME Grocery
CMD ["python", "run.py"]

Команды Docker:

docker build --tag=grocery .
# this is what has worked to get to the app running 
docker run -p 5000:5000 --env-file .env grocery

Приложение находится по адресу:

http://127.0.0.1:5000/

Я ожидаю, что приложение будет запускаться и загружать изображения только один раз. Я в недоумении здесь. Любая помощь будет высоко ценится.

Редактировать: файлы html / css / js находятся на моем локальном компьютере. Изображения в s3 и CloudFront. Не уверен, что это будет иметь значение.

Edit2: добавление кода, когда я смог найти проблему. Смотрите мой ответ ниже.

@main.route('/cdn/<path:filename>')
def custom_static(filename):

    return redirect(urljoin(os.environ['CLOUDFRONT_CDN_MAIN'], filename))

.env file

CLOUDFRONT_CDN_MAIN="https://example.com"

1 Ответ

0 голосов
/ 17 июня 2019

Проблема была вызвана перенаправлением фляги и моим файлом .env, содержащим кавычки. При запуске в оболочке pipenv мой код работал нормально. При запуске в Docker обратный редирект добавляет кавычки в редирект и вызывает бесконечный цикл перенаправления.

Я изменил:

CLOUDFRONT_CDN_MAIN="https://example.com"

до:

CLOUDFRONT_CDN_MAIN=https://example.com

и все работает сейчас.

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