docker - 使用docker-compose.yaml的动态crontab

标签 docker docker-compose cron

我正在尝试使用此链接作为基础来构建动态cron作业:How to run a cron job inside a docker container
当我是容器$ var1时,会打印正确的值,但看起来像cron并不喜欢env变量...。
有什么办法解决吗?
Dockerfile:

FROM alpine:latest
RUN apk update
RUN apk add rsync run-parts curl
COPY /Scripts/* /
RUN chmod 755 /entry.sh /script.sh /start.sh
#RUN /usr/bin/crontab /crontab.txt
CMD ["/entry.sh"]
entry.sh:
#!/bin/sh
# start cron
sh start.sh
/usr/sbin/crond -f -l 8
start.sh:
#!/bin/bash

/usr/bin/crontab /crontab.txt
docker-compose.yml:
version: '3.6'
services:
    test:
        image: test1
        environment:
            - var1=${var1_env}
    
.env:
var1_env=*/1
crontab.txt:
$var1 * * * * /script.sh >> /var/log/script.log

最佳答案

Cronjobs通常在新鲜,干净的环境中运行。您看到的行为是cron守护程序在运行作业之前正在“清理”环境。
您有两种选择:

  • 让cronjob运行一个shell脚本。该shell脚本设置环境,然后运行命令。 https://stackoverflow.com/a/2229861/530160
  • 在crontab中定义变量。 https://stackoverflow.com/a/10657111/530160
  • 关于docker - 使用docker-compose.yaml的动态crontab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63836431/

    相关文章:

    linux - 将 10 分钟的 cron 作业添加到 Ubuntu 包

    Docker 推送 : push image once with multiple tags

    apache-spark - Spark作业(Java)无法将数据写入Elasticsearch集群

    Cron mysqldump,无法读取 '/etc/my.cnf.d' 的目录(错误代码 : 2)

    docker - Cron 和 Crontab 文件未在 Docker 中执行

    postgresql - 如何从主机访问 docker postgres db

    bash - Git 命令在执行时有效,但在 cronjob 中无效

    docker - 如何使用 Dockerfile 进行 docker 构建?

    docker - 如何实现微服务[Node.js]?

    java - Docker Kafka 生产者 java.lang.ClassNotFoundException