From 5a2ba9c2e7605bb788bc406184547d22c6436867 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Mon, 23 Dec 2024 11:13:27 -0500 Subject: v2.1.0, refactor w/ crimson --- build/init/Dockerfile | 21 ------- build/init/init | 148 -------------------------------------------------- 2 files changed, 169 deletions(-) delete mode 100644 build/init/Dockerfile delete mode 100755 build/init/init (limited to 'build/init') diff --git a/build/init/Dockerfile b/build/init/Dockerfile deleted file mode 100644 index 98eb285..0000000 --- a/build/init/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -FROM alpine:3.19 - -# install packages -RUN apk add --no-cache postgresql16-client tini shadow -RUN rm -fr /var/cache/apk/* - -# setup main user -RUN adduser -D init -RUN groupmod --gid 1000 init -RUN usermod --uid 1000 init - -# copy scripts -COPY ./init /usr/local/bin/init - -# remove build packages -RUN apk del shadow - -# do the -USER init -ENTRYPOINT ["/sbin/tini", "--"] -CMD ["/usr/local/bin/init"] diff --git a/build/init/init b/build/init/init deleted file mode 100755 index c8dd3f0..0000000 --- a/build/init/init +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/sh - -errors=$(mktemp) - -step() { - printf '\x1b[34;1m>> %s\x1b[0m\n' "$*" -} - -error() { - { - printf '\x1b[31;1merror: \x1b[0m%s\n' "$*"; - grep -v 'current transaction is aborted' < "$errors"; - printf "\x1b[31m;1error: \x1b[0mAborting migrations, fix file(s) then restart process."; - } 1>&2; -} - -try() { - "$@" 2> "$errors"; - count=$(grep -c 'ERROR' < "$errors") - if [ "$count" -eq 0 ]; then - return 0; - else - return 1; - fi -} - -export PGPASSWORD="$POSTGRES_PASSWORD" - -psql() { - /usr/bin/psql \ - -h db \ - -p 5432 \ - -d "$POSTGRES_DB" \ - -U "$POSTGRES_USER" \ - "$@" -} - -pg_isready() { - /usr/bin/pg_isready \ - -h db \ - -p 5432 \ - -d "$POSTGRES_DB" \ - -U "$POSTGRES_USER" -} - -curr_revision() { - psql -qtAX -f /db/rev.sql; -} - -wait_until_ready() { - step 'Checking if the database is ready...'; - while true; do - pg_isready; - code=$?; - if [ $code -eq 0 ]; then - break; - fi - sleep 3; - done -} - -run_migrations() { - i="$1" - while true; do - name=$(printf "%04d" "$i"); - file="/db/migrations/$name.sql" - if [ -f "$file" ]; then - if try psql -f "$file"; then - i=$((i+1)); - continue; - else - error "An error occoured during a migration (rev $name)" - return 1; - fi - else - return 0; - fi - done -} - -init_api() { - if try psql -f /db/rest/rest.sql; then - return 0; - else - error "An error occoured during api initialization" - return 1; - fi -} - -update_jwt() { - if try psql -c "UPDATE sys.database_info SET jwt_secret = '$JWT_SECRET' WHERE name = current_database();"; then - return 0; - else - error "Could not update JWT" - return 1; - fi -} - -load_ext() { - psql -qtAX -f /db/ext.sql; -} - -init () { - # reomve ready status - # so php ignores requests - rm -f /status/ready - - step 'Waiting for database'; - # make sure the database is running - # before we run any requests - wait_until_ready; - step 'Database ready'; - - step 'Loading extensions'; - # Make sure extensions are loaded - load_ext; - - step 'Peforming migrations'; - # get the current revision - REV=$(curr_revision); - step "Database at revision: $REV" - # run each migration that is - # higher than our current revision - if ! run_migrations "$REV"; then - return 1; - fi - - step 'Initalizing the api'; - # reinit the api schema for - # postgrest - if ! init_api; then - return 1; - fi - - step 'Updating JWT secret'; - # make sure postgres has the corrent - # jwt secret - if ! update_jwt; then - return 1; - fi - - step 'Database is initialized' - # database is ready - touch /status/ready -} - -init -rm "$errors" -- cgit v1.2.3-freya