My goal is to create a docker container to use as crontab container.
First Dockerfile:
FROM python:3.9-slim-bullseye as python
# Prevents Python from writing .pyc files
ENV PYTHONDONTWRITEBYTECODE 1
# Causes all output to stdout to be flushed immediately
ENV PYTHONUNBUFFERED 1
RUN apt update -yqq \
&& apt install -y cron build-essential libssl-dev gcc g++ curl wget freetds-dev freetds-bin gnupg apt-transport-https lsb-release vim \
&& apt install -y unixodbc unixodbc-dev libgss3 odbcinst default-libmysqlclient-dev libmagic1 \
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
&& exit \
&& apt update -yqq \
&& ACCEPT_EULA=Y apt install -yqq msodbcsql17 \
&& ACCEPT_EULA=Y apt install -yqq mssql-tools
RUN useradd --create-home --shell /bin/bash danilo
# Update pip
RUN /usr/local/bin/python -m pip install --upgrade pip
WORKDIR /app
COPY docker/* ./
RUN pip install --no-cache-dir -r requirements.txt
WORKDIR /app/scripts
#COPY scripts/* ./
#RUN chmod a+x *.py
RUN crontab /app/crontab
# Do not use this image as 'root' user
#USER danilo
RUN chmod 777 /app/entrypoint.sh
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["/bin/bash"]
then, add relative stanza to docker-compose.yml file:
crontab:
image: registry.waltertosto.it/wt-python:latest
tty: true # docker run -t
stdin_open: true # docker run -i
restart: always
volumes:
- ./crontab/crontab:/app/crontab
- ./crontab/scripts:/app/scripts
Add crontab file and be careful to leave am empty line at the end, otherwise it will not work!
* * * * * /usr/bin/python3 -u /app/scripts/test.py > /dev/console
Entrypoint.sh
#!/bin/sh
set -e
crontab /app/crontab
printenv > /etc/environment
cron -f
sleep infinity
Top comments (0)