@amadshock

Docker, CRON /bin/sh: 1: Syntax error: Bad fd number Что не так?

Подскажите, что не так делаю?
Пытаюсь запустить cron в docker образе php
Dockerfile:
FROM php:7-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libzip-dev \
        zip \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install zip \
    && docker-php-ext-install mysqli \
    && docker-php-ext-install pdo_mysql

# Install cron
RUN apt-get update && apt-get install -y cron \
    nano
COPY cronfile /etc/cron.d/cronfile
RUN chmod 0644 /etc/cron.d/cronfile && \
    touch /var/log/cron.log && \
    chmod 0777 /var/log/cron.log && \
    crontab /etc/cron.d/cronfile

CMD bash -c "cron && php-fpm"


Содержимое cronfile:
* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
# An empty line is required at the end of this file for a valid cron file.


В /var/log/cron.log ничего не выводится.
в /var/mail/mail от крона приходит ошибка:
/bin/sh: 1: Syntax error: Bad fd number

Пробовал прописать в cronfile
SHELL=/bin/bash
Тогда на почту получаю ошибку
/bin/bash: 1
: ambiguous redirect
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
@amadshock Автор вопроса
Решил вопрос. Может кому поможет. Если я создаю файл cronfile в windows - в начало файла приписывается какой то символ, который не читается sh.
Если создать файл заданий через консоль - то все будет норм.
Я справился таким образом:
FROM php:7-fpm
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libzip-dev \
        zip \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install zip \
    && docker-php-ext-install mysqli \
    && docker-php-ext-install pdo_mysql

# Install cron
RUN apt-get update && apt-get install -y cron \
    nano

RUN touch /etc/cron.d/cronfile && \
    touch /var/log/cron.log && \
    echo "SHELL=/bin/sh" >> /etc/cron.d/cronfile && \
    echo "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" >> /etc/cron.d/cronfile && \
    echo "* * * * * echo 777555 >> /var/log/cron.log 2>&1" >> /etc/cron.d/cronfile && \
    chmod 0644 /etc/cron.d/cronfile && \
    chmod 0777 /var/log/cron.log && \
    crontab /etc/cron.d/cronfile

CMD cron && php-fpm
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы