LINUX.ORG.RU
ФорумAdmin

Как правильно сделать связку в Docker: php + cron?

 ,


0

3

В Docker нужно сделать так, чтобы в cron раз в сутки запускался php скрипт. Скажите, как правильно это реализовать? В интернете встречал вариант запустить в одном контейнере через supervisor сразу 2 процесса (fpm и cron), но другие говорят что каждый процесс должен быть изолирован. Я создал 2 контейнера: в одном php в другом cron. Связал их с помощью links и volumes, но я не могу вызвать из крона php скрипт из другого контейнера. Скажите, как все таки правильно это сделать?

Файл docker-compose.yml

cron:
    build: ./
    # command: crond && tail -f /dev/null
    links:
        - "php"
    volumes:
        - "./:/home"

php:
    image: php
    command: tail -f /dev/null
    volumes:
        - "./:/home"

Файл Dockerfile

FROM centos
RUN yum -y update
RUN yum -y install crontabs
RUN sed -i -e '/pam_loginuid.so/s/^/#/' /etc/pam.d/crond
ADD cron /etc/cron.d/cron_test
RUN chmod 0644 /etc/cron.d/cron_test
RUN crontab /etc/cron.d/cron_test
CMD crond && tail -f /dev/null

Запускаете в докере php

В хост-системе прописываете в крон что-то в духе docker exec <container> php /path/to/php/script.php

второй контейнер для этого ни к чему

l0stparadise ★★★★★ ()
Ответ на: комментарий от l0stparadise

Спасибо, я тоже встречал этот вариант. Но может быть можно как то средствами самого докера это сделать? А то это немного смахивает на костыль. Да и разворачивать такую систему будет уже не так удобно и преимужества докера уже не столь очевидны..

NkDev ()
Ответ на: комментарий от NkDev

Но может быть можно как то средствами самого докера это сделать? А то это немного смахивает на костыль.

Смузи обожрался? ты так говоришь, как будто докер - это не костыль.

anonymous ()

Как вариант, собрать один образ, в котором будет и пхп, и крон.

А потом композом запускать два контейнера: один с fpm, а другой с кроном.

В твоей реализации запустить скрипт ты не можешь из-за того, что контейнер с кроном видит просто файлы с пхп-кодом и внутри никто эти файлы выполнять не может. Интерпретатора то нет.

Dmit3Y ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.