Я создал простое приложение Flask, которое я пытаюсь развернуть в Docker.
Базовый пользовательский интерфейс будет загружаться на локальный хост, но когда я выполняю команду, которая вызывает определенную функцию, он продолжает отображать:
"Внутренняя ошибка сервера Сервер обнаружил внутреннюю ошибку и не смогчтобы выполнить ваш запрос. Либо сервер перегружен, либо в приложении произошла ошибка. "
Просматривая журналы Docker, я вижу проблему в том, что файл не может быть найден командой subprocess.popen:
"FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'test_2.bat': 'test_2.bat' 172.17.0.1 - - [31 / Oct / 2019 17:01:55]" POST / loginHTTP / 1.1 "500"
Файл, безусловно, существует в среде Docker, в контейнере, который я вижу в списке в корневом каталоге.
Я также попытался изменить:
item = subprocess.Popen(["test_2.bat", i], shell=False,stdout=subprocess.PIPE)
до:
item = subprocess.Popen(["./test_2.bat", i], shell=False,stdout=subprocess.PIPE)
, который выдал альтернативную ошибку:
"OSError: [Errno 8] Ошибка формата Exec: './test_2.bat' 172.17.0.1 -- [31 / Oct / 2019 16:58:54] "POST / логин HTTP / 1.1" 500 "
Я добавил shebang в начало обоих .py файлов, включенных в приложение Flask (хотя, возможно, я сделал это неправильно):
#!/usr/bin/env python3
и это Dockerfile:
FROM python:3.6
RUN adduser lighthouse
WORKDIR /home/lighthouse
COPY requirements.txt requirements.txt
# RUN python -m venv venv
RUN pip install -r requirements.txt
RUN pip install gunicorn
COPY templates templates
COPY json_logs_nl json_logs_nl
COPY app.py full_script_manual_with_list.py schema_all.json ./
COPY bq_load_indv_jsons_v3.bat test_2.bat ./
RUN chmod 644 app.py
RUN pip install flask
ENV FLASK_APP app.py
RUN chown -R lighthouse:lighthouse ./
USER lighthouse
# EXPOSE 5000
CMD ["flask", "run", "--host=0.0.0.0"]
Я использую Ubuntu и WSL2 для запуска Docker на компьютере с Windows без виртуальной коробки. У меня нет проблем с навигацией по моей файловой системе Windows или созданием образов Docker, поэтому я думаю, что эта конфигурация не является проблемой - но на всякий случай.
Если у кого-нибудь есть какие-либо идеи, чтобы помочь подпроцессу найти test_2.bat, я был бы оченьблагодарен!
Редактировать: приложение работает точно так же, как и ожидалось, когда выполняется локально через командную строку с «запуск колбы»