我正在尝试在 Docker 容器内运行 cronjobs。当我记录输出时,环境变量为空,但是当我在容器内手动运行我的脚本时,它工作正常。
这些是我的文件:
main.py
import os
print(os.getenv('DATABASE'))
crontab
* * * * * /usr/local/bin/python3 /app/main.py > /proc/1/fd/1 2>/proc/1/fd/2
Dockerfile
FROM python:3.7-slim
RUN apt-get update
RUN apt-get install cron -y
WORKDIR /app
COPY main.py /app/main.py
COPY crontab /etc/cron.d/crontab
RUN chmod 0644 /etc/cron.d/crontab
RUN /usr/bin/crontab /etc/cron.d/crontab
CMD ["cron", "-f"]
重现:
- docker build -t log .
- docker run --env DATABASE=MYSQL --name cronlog -d log
- docker logs cronlog (returns None every minute)
- docker exec -it cronlog python3 main.py (returns MYSQL)