У меня есть проект на python, мне нужно по расписанию запускать скрипты оттуда:
# docker-compose.yml
version: "3"
services:
...
crontab:
container_name: crontab
build:
context: .
dockerfile: crontab/Dockerfile
args:
PROJECT_DIR: /opt/project
LOGS_DIR: /opt/project/logs
SERVER_NAME: ${SERVER_NAME}
volumes:
- .:/opt/project
- ./logs:/opt/project/logs
stdin_open: true
tty: true
depends_on:
- redis
redis:
image: redis:alpine
# Dockerfile
FROM python:3.6-slim-buster
ARG LOGS_DIR
ARG PROJECT_DIR
ARG SERVER_NAME
ENV LOGS_DIR=${LOGS_DIR}
ENV PROJECT_DIR=${PROJECT_DIR}
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
RUN apt-get update && apt-get -y install libpq-dev gcc python3-dev musl-dev netcat cron
WORKDIR ${PROJECT_DIR}
COPY . ${PROJECT_DIR}
RUN pip install -r requirements.txt
COPY crontab/${SERVER_NAME}/ /etc/cron.d/
RUN for file in /etc/cron.d/*; do crontab $file; done
RUN touch /var/log/cron.log && env >> /etc/environment
CMD ["cron", "-f"]
# Cron file
* * * * * root python $PROJECT_DIR/run.py run_some_script >> $LOGS_DIR/run_some_script.cron.log
* * * * * root echo 'cron_works' >> $LOGS_DIR/run_some_script.cron.log
В итоге все нормально билдится, но в лог файл не пишется ни результат скрипта, ни cron_works