Python Docker容器在自动运行时存在不同的行为

Python Docker容器在自动运行时存在不同的行为,python,docker,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 follo

我有一个基本的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

但是现在,当我手动运行它时,它只利用现有的令牌,并且在没有验证的情况下工作。删除令牌文件并再次授权也不起作用。为什么当我自动运行它时,它会请求授权,而当我手动运行它时,它不会请求授权?这些是不同的用户吗?如何修复此问题?

我已修复

CMD从根目录运行,因此它在那里查找令牌。通过将WORKDIR更改为我的程序的main,它现在可以找到令牌:

FROM python:3
ADD requirements.txt ./
RUN pip install -r requirements.txt
WORKDIR /main
ADD ./main .
CMD [ "python", "./main.py"]
手动从根目录运行它并在根目录中创建令牌并没有解决问题的原因是这些更改没有保存。显然,每次你关闭图像,它都会忘记一切。活到老学到老。

我修好了

CMD从根目录运行,因此它在那里查找令牌。通过将WORKDIR更改为我的程序的main,它现在可以找到令牌:

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

手动从根目录运行它并在根目录中创建令牌并没有解决问题的原因是这些更改没有保存。显然,每次你关闭图像,它都会忘记一切。活到老学到老。

如果我理解正确,您可以在docker容器中运行脚本,该容器创建了一个令牌文件。现在您可以从容器外部访问此令牌。对吗?您已经生成了
o365_token.txt
,为什么还需要登录,您的问题还不清楚。当我手动登录时,它不要求授权,但当我自动运行(docker run)时,它要求授权。该文件在哪里?这是一个长期运行的服务,还是您反复
sudocker运行…
it?因此,如果我理解正确,您可以在docker容器中运行脚本,该容器创建了一个令牌文件。现在您可以从容器外部访问此令牌。对吗?您已经生成了
o365_token.txt
,为什么还需要登录,您的问题还不清楚。当我手动登录时,它不要求授权,但当我自动运行(docker run)时,它要求授权。该文件在哪里?这是一项长期运行的服务,还是您反复运行sudocker…it?