gpt4 book ai didi

Python 依赖关系以及 Docker 和 Crontab

转载 作者:IT王子 更新时间:2023-10-29 06:12:46 32 4
gpt4 key购买 nike

尝试通过 Docker 容器中的 Crontab 运行 Python 脚本时,我遇到了一个奇怪的问题。这是设置。

我有一个这样的 Dockerfile:

FROM python:3-onbuild

# Install cron and dependencies
RUN apt-get update && apt-get -y install cron

# Add crontab file in the cron directory
ADD crontab /etc/cron.d/simple-cron
WORKDIR /src
COPY . /src

# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/simple-cron
RUN chmod 777 /usr/local/lib/python3.6/site-packages

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

# Run the command on container startup
CMD ["cron", "-f"]

还有一个像这样的 crontab 文件:

* * * * * root python /src/test.py > /proc/1/fd/1 2>/proc/1/fd/2

当我启动容器时,这会正确执行,没有任何问题。我的Python文件第一行是import redis,导致脚本失败,提示找不到模块。

有趣的是,当我手动执行 docker exec -it [container_name] python test.py 时,一切都按预期进行。

这可能是什么问题?我在想需求文件没有安装到正确的位置?

最佳答案

在 docker 中使用 python 我发现使用 vendoring 工具很有帮助。不要复制本地站点包,而是运行一个脚本或一系列 RUN 命令:

  1. 建立虚拟环境
  2. 激活它
  3. 调用pip install -r requirements.txt

这是我在开发中使用的脚本示例:

pip3 install virtualenv;
virtualenv --no-site-packages --python=python3.6 app;
virtualenv --relocatable app;
source ./app/bin/activate;
pip3 install -r requirements.txt;

关于Python 依赖关系以及 Docker 和 Crontab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234740/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com