Контейнер Docker демонстрирует другое поведение при автоматическом запуске - PullRequest
1 голос
/ 28 мая 2019

У меня есть базовый контейнер Python Docker, который использует библиотеку O365 для получения почты из Office365.

FROM python:3
ADD requirements.txt ./
RUN pip install -r requirements.txt
ADD ./main ./main
CMD [ "python", "./main/main.py"]

При первом запуске этой библиотеки O365 вам необходимо авторизовать ее, и она сохраняет o365_token.txt, который она использует после этого. Это выглядит так:

Visit the following url to give consent:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?resp....
Paste the authenticated url here:

Это также произошло на моем новом Docker, поэтому я вошел в него через Bash:

docker run -it hvdveer/e2t-python bash

Но теперь, когда я запускаю его вручную, он просто использует существующий токен и работает без проверки. Удаление файлов токенов и их повторная авторизация также не работают. Почему он запрашивает авторизацию, когда я запускаю его автоматически, а не когда запускаю его вручную? Это разные пользователи? Как это исправить?

1 Ответ

0 голосов
/ 28 мая 2019

Я исправил это!

CMD запускается из корневого каталога, поэтому он ищет токен там.Изменив WORKDIR на основную часть моей программы, он теперь находит токен:

FROM python:3
ADD requirements.txt ./
RUN pip install -r requirements.txt
WORKDIR /main
ADD ./main .
CMD [ "python", "./main.py"]

Причина, по которой запуск его вручную от root и создание токена в root не решает проблему, заключается в том, чтоизменения не сохраняются.Видимо, каждый раз, когда вы закрываете изображение, оно забывает обо всем.Живи и учись.

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