关于我的问题,我已经看到了很多问题,但似乎没有一个解决方案有效。我有一个Docker容器,它运行python脚本cronjob,现在我希望它每分钟都运行一次。由于某些原因,它无法捕获环境变量
我的环境变量在.env文件中设置。我有一个docker compose文件,它将.env文件读入cron容器。为了减少长度,我不会发布docker compose或.env文件
这是我的cron容器Dockerfile,cronpy
是cronjob的定义:
FROM python:3.9.0
ENV PYTHONUNBUFFERED 1
RUN apt-get update &&\
apt-get install -y libldap2-dev\
libsasl2-dev\
xmlsec1\
cron &&\
pip install --upgrade --trusted-host pypi.org --trusted-host files.pythonhosted.org pip
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade --trusted-host pypi.org --trusted-host files.pythonhosted.org -r requirements.txt
COPY . /code/
COPY ./cronpy /etc/cron.d/cronpy
# Apply cron job
RUN crontab /etc/cron.d/cronpy
ENTRYPOINT ["/code/config/cron.sh"]
在我的入口点脚本中,我创建了一个新脚本cron_env.sh
,其中包含我需要的所有环境变量:
#!/usr/bin/env bash
set +e
set +x
env > cron_config
rm -f cron_env.sh
while read -r assignment; do
echo "export ${assignment}" >> cron_env.sh
done < cron_config
chmod 755 cron_env.sh
rm -f cron_config
cron -f
然后,在我的cronpy文件中,我在运行命令之前获取变量的源代码:
* * * * * root . /code/cron_env.sh; /usr/local/bin/python /code/manage.py capture_usage_metrics --type all > /proc/1/fd/1 2>&1
我仍然收到未设置env变量的错误。cron_env.sh
文件创建得很好
我解决了这个问题。其中一个环境变量具有特殊字符,导致
cron_env.sh
脚本失败相关问题 更多 >
编程相关推荐