我正在尝试为一个容器设置一个可以从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前面的点很重要。