Docker容器在自动运行时表现出不同的行为

时间:2019-05-28 09:25:22

标签: python docker

我有一个基本的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 :(得分:0)

我修复了!

CMD是从根目录运行的,因此它正在那里寻找令牌。通过将WORKDIR更改为程序的主目录,它现在找到了令牌:

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

这仍然不能解释为什么从根目录手动运行它并在根目录中创建令牌不能解决问题,但是事实证明这些更改没有保存。显然,每次关闭图像时,它都会忘记所有内容。生活和学习。