Python无法读取Docker容器中的环境变量
我试图为一个可以从python脚本读取的容器设置一个环境变量 python脚本通过容器化的cron作业运行。当直接在容器中运行脚本时,没有cronjob,我能够读取环境变量 我的文件是Python无法读取Docker容器中的环境变量,python,docker,cron,Python,Docker,Cron,我试图为一个可以从python脚本读取的容器设置一个环境变量 python脚本通过容器化的cron作业运行。当直接在容器中运行脚本时,没有cronjob,我能够读取环境变量 我的文件是 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/
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)
我在这里还创建了一个简单的示例:。一个可能的解决方案是在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前面的点很重要。Cron可能会清空环境。请参阅以获取解决方案。不幸的是,这对meI不起作用,因为它能够通过在我的cron命令中导出变量来读取变量:
***export TESTING=1&&cd/opt/&&/usr/local/bin/python runner.py>/var/log/cron.log 2>&1
。虽然这不是理想的解决方案,因为我希望在测试和生产中保持相同的cron作业。实际上,您不能使用源代码(可靠且可移植)cron
使用sh
,而不是bash
;另见