Skip to content

Instantly share code, notes, and snippets.

@milnomada
Last active February 3, 2022 11:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save milnomada/e174287b19c0cb43c881411c9dbfd7db to your computer and use it in GitHub Desktop.
Save milnomada/e174287b19c0cb43c881411c9dbfd7db to your computer and use it in GitHub Desktop.
Run Cron jobs inside Docker container
FROM python:3.8.12-slim-buster
RUN apt update && apt install -y cron vim
RUN mkdir /code
ARG DB_HOST
ARG DB_NAME
ARG DB_USER
ARG DB_PASS
ARG CRON_SCHEDULE
ENV DB_HOST=${DB_HOST}
ENV DB_NAME=${DB_NAME}
ENV DB_USER=${DB_USER}
ENV DB_PASS=${DB_PASS}
ENV CRON_SCHEDULE=${CRON_SCHEDULE:-"* * * * *"}
COPY ./app /code/app
COPY index.py /code/
WORKDIR /code
RUN touch .myenv
RUN echo "export DB_HOST=${DB_HOST_REMOTE}" >> .myenv
RUN echo "export DB_PASS=\"${DB_PASS_REMOTE}\"" >> .myenv
RUN echo "export DB_USER=${DB_USER_REMOTE}" >> .myenv
RUN echo "export DB_NAME=${DB_NAME_REMOTE}" >> .myenv
RUN echo "source /code/.myenv" > load.sh && chmod +x load.sh
RUN echo "python /code/index.py >> /code/cron.log 2>&1 &" > script.sh
RUN chmod +x script.sh
RUN touch cron.log && chmod 664 cron.log
RUN crontab -l | { cat; echo "PATH=/bin/:/usr/bin:/usr/local/bin:$PATH\n\n\
${CRON_SCHEDULE} BASH_ENV=/code/load.sh bash /code/script.sh\n\
"; } | crontab -
CMD /etc/init.d/cron start && echo "Listening log..." && tail -f /code/cron.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment