Python无法读取Docker容器中的环境变量



我正在尝试为一个容器设置一个可以从python脚本中读取的环境变量。

python脚本是通过容器化的cron作业运行的。在没有cronjob的情况下,直接在容器中运行脚本时,我可以读取环境变量。

我的Dockerfile是

FROM python:3.7-slim
# install crontab
RUN apt-get update && apt-get -y install -qq cron
# install crontab
ENV TESTING=1
ENV CONTAINER_HOME=/opt/
WORKDIR $CONTAINER_HOME
ADD runner.py .
COPY test-cron /etc/cron.d/test-cron
# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/test-cron
RUN crontab /etc/cron.d/test-cron
RUN touch /var/log/cron.log
CMD cron && tail -f /var/log/cron.log

运行脚本的cron作业

# every 1 minutes 
* * * * * cd /opt/ && /usr/local/bin/python runner.py >> /var/log/cron.log 2>&1
# An empty line is required at the end of this file for a valid cron file.

最后是运行的脚本

import os
print(os.environ)

我还在这里创建了一个最小的示例:https://github.com/AndrewRPorter/python-docker-env.

一个可能的解决方案是在Dockerfile中添加以下内容:

# install crontab
ENV TESTING=1
RUN echo "export TESTING=$TESTING" >> $HOME/.bashrc

而且。。。

* * * * * . $HOME/.bashrc; cd /opt/ && /usr/local/bin/python runner.py >> /var/log/cron.log 2>&1

$HOME前面的点很重要。

最新更新