V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gouchaoer
V2EX  ›  程序员

可以帮忙看看我的 docker 下 cron 卜执行的问题么?

  •  
  •   gouchaoer · 2016-09-30 22:32:08 +08:00 · 4282 次点击
    这是一个创建于 2977 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是一个跑 php-fpm 的容器, debian 的 jessie 镜像,启动命令 cron&&php-fpm 启动的,我 exec 进容器,看到根本没有 log , ps aux 可以看到 crond 进程在 run 啊。

    而且如果我手动执行 cron 中的命令,就能看到 log ,试过 restart 容器了。

    图片

    第 1 条附言  ·  2016-10-01 11:32:22 +08:00

    补上我的dockerfile如下:

    FROM daocloud.io/php:7-fpm
    MAINTAINER gouchaoer <[email protected]>
    
    RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak && \
        echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list && \
        echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list && \
        echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list && \
        echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
    
    RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get --yes install \
            net-tools \
            htop \
            iftop \
            nano \
            libicu-dev \
            libfreetype6-dev \
            libjpeg62-turbo-dev \
            libmcrypt-dev \
            libpng12-dev \
            libicu-dev \
            libssl-dev \
            libevent-dev
    
    
    RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
        && docker-php-ext-install gd
    
    RUN docker-php-ext-install exif intl mcrypt sockets pdo_mysql
    RUN pecl install mongodb
    RUN echo "extension=mongodb.so" >> /usr/local/etc/php/conf.d/mongodb.ini
    RUN pecl install event
    RUN echo "extension=event.so" >> /usr/local/etc/php/conf.d/event.ini
    
    RUN apt-get --yes  install git cron
    
    COPY . /app_src
    
    RUN mkdir -p /root/.ssh
    RUN chmod 0700 /root/.ssh
    COPY id_rsa /root/.ssh
    RUN chmod 0700 /root/.ssh/id_rsa
    
    RUN crontab /app/mycron
    
    CMD cron && php-fpm
    
    
    9 条回复    2016-10-03 15:56:25 +08:00
    williamx
        1
    williamx  
       2016-10-01 10:19:29 +08:00   ❤️ 1
    我试过 Ubuntu 的容器,没有问题
    gouchaoer
        2
    gouchaoer  
    OP
       2016-10-01 11:34:10 +08:00
    已经补上了 dockerfile ,继续求帮忙
    gouchaoer
        3
    gouchaoer  
    OP
       2016-10-01 12:10:42 +08:00
    我现在已经知道了是 cron 里面没发现我 php 路径的原因,但是我 cat /proc/6/environ 看到了 php 的路径在环境变量下啊,神奇
    gouchaoer
        4
    gouchaoer  
    OP
       2016-10-01 12:41:41 +08:00
    已经解决了, cron 执行命令去开的 shell 的 PATH 他妈的没有完全继承 cron 的 PATH 环境变量,蛋都碎了
    kimown
        5
    kimown  
       2016-10-01 13:56:53 +08:00 via Android
    lz 能描述下解决方案吗,还是有点不太明白
    mritd
        6
    mritd  
       2016-10-02 19:56:10 +08:00 via iPhone
    @gouchaoer ……那肯定的啊……😂😂😂
    dangyuluo
        7
    dangyuluo  
       2016-10-03 07:13:35 +08:00
    这时候只要用 cron 来讲 PATH 输出到文件就可以排查出
    ooonme
        8
    ooonme  
       2016-10-03 15:54:17 +08:00 via iPhone
    cron 的日志有报错吧,之前遇到过这种问题,跟 docker 无关
    gouchaoer
        9
    gouchaoer  
    OP
       2016-10-03 15:56:25 +08:00 via Android
    @ooonme docker 基础镜像不带 syslog 进程的,我 tm 开了 syslog 发现 cron 执行正常,也就是说 cron 只是开 shell 去执行命令就不管了,无法知道命令成功与否
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 20:05 · PVG 04:05 · LAX 12:05 · JFK 15:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.