From 89333e35c6d02d7fd5b877331af5bd154be44105 Mon Sep 17 00:00:00 2001 From: bel Date: Sun, 26 Jan 2020 18:56:30 +0000 Subject: [PATCH] upgrade .12 to .19 --- .dockerignore | 1 + Dockerfile | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ build.sh | 12 +++++++++++ pause/main.c | 20 ++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100755 .dockerignore create mode 100755 Dockerfile create mode 100755 build.sh create mode 100755 pause/main.c diff --git a/.dockerignore b/.dockerignore new file mode 100755 index 0000000..a9a5aec --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +tmp diff --git a/Dockerfile b/Dockerfile new file mode 100755 index 0000000..0e1345c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,57 @@ +FROM ubuntu:18.10 as builder +RUN apt -y update \ + && apt -y install gcc +COPY ./pause /pause +RUN cd /pause && gcc ./main.c -o pauser + +FROM ubuntu:18.10 +RUN groupadd postgres && useradd -d /home/postgres -ms /bin/bash -g postgres -G sudo postgres +RUN apt -y update \ + && apt -y install \ + curl \ + rsync \ + cron \ + postgresql postgresql-contrib \ + && curl -L \ + https://github.com/miniflux/miniflux/releases/download/2.0.19/miniflux_2.0.19_amd64.deb \ + > /miniflux.deb \ + && dpkg -i /miniflux.deb \ + && mkdir -p /mnt/save +USER postgres +RUN service postgresql start && sleep 10 \ + && psql --command "CREATE USER mini WITH SUPERUSER PASSWORD 'pwd';" \ + && createdb -O mini pwd \ + && psql --command "CREATE DATABASE miniflux;" \ + && psql --command "GRANT ALL PRIVILEGES ON DATABASE miniflux TO mini;" \ + && service postgresql stop && sleep 10 + +ENV DATABASE_URL=postgres://mini:pwd@localhost/miniflux?sslmode=disable +ENV LISTEN_ADDR=:8032 +ENV RUN_MIGRATIONS=1 +ENV CREATE_ADMIN=1 +ENV ADMIN_USERNAME=username +ENV ADMIN_PASSWORD=password + +ENV RUN_MIGRATIONS=0 +ENV CREATE_ADMIN=0 + +COPY --from=builder /pause/pauser /pauser + +USER root +### CRON BACKUPS +RUN true \ + && echo 'service postgresql stop && sleep 5 && b=$(date +%Y%m%d%H) && mkdir -p /mnt/save/$b && rsync -avzP --delete /var/lib/postgresql/10/main/ /mnt/save/$b/ && service postgresql start' > /backup.sh \ + && echo 'service postgresql stop && sleep 5 && b=$(find /mnt/save -mindepth 1 -maxdepth 1 | sort | tail -n 1); if [ -n "$b" ]; then rsync -avzP --delete "${b%/}/" /var/lib/postgresql/10/main/; fi && chown -R postgres /var/lib/postgresql && chmod -R 0700 /var/lib/postgresql && service postgresql start;' > /restore.sh \ + && echo '0 4,8,12,16,20 * * * bash /backup.sh >> /var/log/cronj.log 2>&1' > /etc/cron.d/backups \ + && echo '' >> /etc/cron.d/backups \ + && chmod 0644 /etc/cron.d/backups \ + && touch /var/log/cronj.log + +ENTRYPOINT \ + bash /restore.sh \ + && service postgresql start \ + && sleep 10 \ + && miniflux -migrate \ + && miniflux -create-admin \ + && miniflux \ + & exec /pauser diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..400c0fc --- /dev/null +++ b/build.sh @@ -0,0 +1,12 @@ +#! /bin/bash + +set -e + +cd "$(dirname "${BASH_SOURCE[0]}")" + +mkdir $(pwd)/tmp || true + +docker build -t dev:dev . +docker run --rm -it -p 8032:8032 -v $(pwd)/tmp:/mnt dev:dev + +#rm -r $(pwd)/tmp diff --git a/pause/main.c b/pause/main.c new file mode 100755 index 0000000..663dff2 --- /dev/null +++ b/pause/main.c @@ -0,0 +1,20 @@ +#include +#include +#include + +int main() { + int stat; + int sig; + sigset_t set; + sigemptyset(&set); + printf("add signal SIGINT: %i\n", sigaddset(&set, SIGINT)); + printf("add signal SIGKILL: %i\n", sigaddset(&set, SIGKILL)); + printf("add signal SIGTERM: %i\n", sigaddset(&set, SIGTERM)); + sigprocmask(SIG_BLOCK, &set, NULL); + printf("Waiting...\n"); + stat = sigwait(&set, &sig); + printf("Wait complete: %i (%i)\n", sig, stat); + printf("Stopped postgres: %i\n", system("service postgresql stop && sleep 5")); + printf("Saved postgres: %i\n", system("bash /backup.sh")); + return 0; +}