Coe*_*7st 3 python environment cron docker
我想使用 crontab 在 Docker 容器中运行 Python 脚本,现在 cron 成功运行了 python 脚本,但它找不到 Dockerfile 给出的 ENV 变量,当我从容器内部运行 echo $DOG 时,会显示预期的字符串“dog”或者当 ik 手动运行 python 脚本时,/> python dog.py它可以找到 ENV 变量。所以 ENV 位于容器内的操作系统中。
为什么 cron 运行的脚本无法访问?
定时任务
* * * * * /usr/local/bin/python3 /app/dog.py > /proc/1/fd/1 2>/proc/1/fd/2
# empty line
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM python:3.10
RUN apt-get update && apt-get install -y cron
WORKDIR /app/
COPY crontab .
COPY dog.py .
RUN chmod -R 755 /app/
RUN crontab /app/crontab
CMD ["cron", "-f"]
Run Code Online (Sandbox Code Playgroud)
狗.py
* * * * * /usr/local/bin/python3 /app/dog.py > /proc/1/fd/1 2>/proc/1/fd/2
# empty line
Run Code Online (Sandbox Code Playgroud)
docker-compose.yaml
FROM python:3.10
RUN apt-get update && apt-get install -y cron
WORKDIR /app/
COPY crontab .
COPY dog.py .
RUN chmod -R 755 /app/
RUN crontab /app/crontab
CMD ["cron", "-f"]
Run Code Online (Sandbox Code Playgroud)
我通过运行 bash 脚本解决了这个问题,该脚本在容器启动时将所有变量放入 /etc/environment 中。
Dockerfile
...
CMD ["./entry.sh"]
Run Code Online (Sandbox Code Playgroud)
入口.sh
...
CMD ["./entry.sh"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1703 次 |
| 最近记录: |