forked from mirrors/bookwyrm
015d45ef99
init.d isn't run when docker containers are run so we need to modify the entrypoint. This commit makes the ugly choice of injecting the command in automatically in order to avoid the need to manually maintain the images entrypoint.
19 lines
926 B
Docker
19 lines
926 B
Docker
FROM postgres:latest
|
|
|
|
# crontab
|
|
RUN mkdir /backups
|
|
COPY ./backup.sh /backups
|
|
COPY ./cronfile /etc/cron.d/cronfile
|
|
RUN apt-get update && apt-get -y install cron
|
|
RUN chmod 0644 /etc/cron.d/cronfile
|
|
RUN crontab /etc/cron.d/cronfile
|
|
RUN touch /var/log/cron.log
|
|
|
|
# The postgres image's entrypoint expects the docker command to only contain flags to
|
|
# pass postgres. It runs the entrypoint twice, the second times as the postgres user.
|
|
# We need to start the cron service the first time it runs, when it's still being run
|
|
# as the root user. We're going to add a check that looks at the first argument and
|
|
# if it's 'cron', starts the service and then removes that argument.
|
|
RUN awk '$0 ~ /^\t_main "\$@"$/ { print "\tif [[ $1 == cron ]]; then\n\t\tservice cron start\n\t\tshift\n\tfi" }{ print }' docker-entrypoint.sh > bookwyrm-entrypoint.sh
|
|
RUN chown postgres /bookwyrm-entrypoint.sh
|
|
RUN chmod u=rwx,go=r /bookwyrm-entrypoint.sh
|