From 9895017385053ec5ff80cbaec4fe6c6ff9092345 Mon Sep 17 00:00:00 2001 From: Finn Stutzenstein Date: Wed, 21 Oct 2026 08:36:53 +0000 Subject: [PATCH] Restructure scripts into dev/ and prod/ for the devcontainer - scripts/prod: entrypoint, db-setup and schema.sql shipped in the image - scripts/dev: seed/clear db, psql and cleanup, run natively in the devcontainer instead of via docker-compose - move setup.cfg to the repo root so linters pick it up - Makefile targets run directly in the devcontainer Co-Authored-By: Claude Opus 5.5 --- Dockerfile | 3 +-- Makefile | 39 +++++++++-------------------- scripts/{ => dev}/cleanup.sh | 3 +++ scripts/dev/clear-db.sh | 6 +++++ scripts/{ => dev}/psql.sh | 3 +++ scripts/dev/seed-db.sh | 10 ++++++++ scripts/{ => prod}/db-setup.sh | 2 +- scripts/{ => prod}/entrypoint.sh | 0 {max/db => scripts/prod}/schema.sql | 0 scripts/setup.cfg => setup.cfg | 0 10 files changed, 36 insertions(+), 30 deletions(-) rename scripts/{ => dev}/cleanup.sh (92%) create mode 100755 scripts/dev/clear-db.sh rename scripts/{ => dev}/psql.sh (92%) create mode 100755 scripts/dev/seed-db.sh rename scripts/{ => prod}/db-setup.sh (68%) rename scripts/{ => prod}/entrypoint.sh (100%) rename {max/db => scripts/prod}/schema.sql (100%) rename scripts/setup.cfg => setup.cfg (100%) diff --git a/Dockerfile b/Dockerfile index 9ae7378..c5be319 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,8 +14,7 @@ ENV PYTHONPATH=/app/ ENV FLASK_APP=max.app COPY max/ ./max -COPY scripts/entrypoint.sh . -COPY scripts/db-setup.sh . +COPY scripts/prod/ . ENTRYPOINT ["./entrypoint.sh"] CMD ["gunicorn", "-w", "1", "-b", "0.0.0.0:8000", "max.app:app"] diff --git a/Makefile b/Makefile index e5741b5..b55fea7 100644 --- a/Makefile +++ b/Makefile @@ -1,36 +1,21 @@ -# DEVELOPMENT SERVER +# DEV +seed-dev: clear-dev + FLASK_APP=max.app FLASK_DEBUG=1 scripts/dev/seed-db.sh -seed-dev: - scripts/entrypoint-dev.sh +clear-dev: + scripts/dev/clear-db.sh -build-dev: - docker build -t max:dev -f Dockerfile.dev . +run-dev: + FLASK_APP=max.app FLASK_DEBUG=1 flask run --host 0.0.0.0 --port 8757 -run-dev: | build-dev - # bash -c "trap 'docker-compose -f dc.dev.yml down' EXIT; MAX_COMMAND=\"flask run --host 0.0.0.0 --port 8000\" docker-compose -f dc.dev.yml up --build" - MAX_COMMAND="flask run --host 0.0.0.0 --port 8000" docker-compose -f dc.dev.yml up +run-dev-as-prod: + mkdir -p log + FLASK_APP=max.app LOG_DIR=log gunicorn -w 1 -b 0.0.0.0:8757 max.app:app -run-bash: | build-dev - MAX_COMMAND="sleep infinity" docker-compose -f dc.dev.yml up -d - docker-compose -f dc.dev.yml exec max "./entrypoint-dev.sh" - docker-compose -f dc.dev.yml exec max chown -R $$(id -u $${USER}):$$(id -g $${USER}) /app - docker-compose -f dc.dev.yml exec -u $$(id -u $${USER}):$$(id -g $${USER}) max bash || true - docker-compose -f dc.dev.yml down - -run-bash-root: | build-dev - MAX_COMMAND="sleep infinity" docker-compose -f dc.dev.yml up -d - docker-compose -f dc.dev.yml exec max "./entrypoint-dev.sh" - docker-compose -f dc.dev.yml exec max bash || true - docker-compose -f dc.dev.yml down - -stop-dev: - docker-compose -f dc.dev.yml down - -run-cleanup: | build-dev - docker run -ti -v `pwd`/max:/app/max --entrypoint="" max-dev ./cleanup.sh +run-cleanup: + scripts/dev/cleanup.sh # PROD - build-prod: docker build -t max:$(shell cat VERSION) . diff --git a/scripts/cleanup.sh b/scripts/dev/cleanup.sh similarity index 92% rename from scripts/cleanup.sh rename to scripts/dev/cleanup.sh index 25b2240..04af8a5 100755 --- a/scripts/cleanup.sh +++ b/scripts/dev/cleanup.sh @@ -1,4 +1,7 @@ #!/bin/bash + +set -e + printf "Black:\n" black max/ printf "\nIsort:\n" diff --git a/scripts/dev/clear-db.sh b/scripts/dev/clear-db.sh new file mode 100755 index 0000000..a66dcde --- /dev/null +++ b/scripts/dev/clear-db.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +PGPASSWORD="$PGSQL_PASSWORD" psql -v ON_ERROR_STOP=1 -h "$PGSQL_HOST" -p "$PGSQL_PORT" -U "$PGSQL_USER" -d "$PGSQL_NAME" \ + -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;" diff --git a/scripts/psql.sh b/scripts/dev/psql.sh similarity index 92% rename from scripts/psql.sh rename to scripts/dev/psql.sh index 738d8fc..d28a937 100755 --- a/scripts/psql.sh +++ b/scripts/dev/psql.sh @@ -1,2 +1,5 @@ #!/bin/bash + +set -e + PGPASSWORD="$PGSQL_PASSWORD" psql -h "$PGSQL_HOST" -p "$PGSQL_PORT" -U "$PGSQL_USER" -d "$PGSQL_NAME" diff --git a/scripts/dev/seed-db.sh b/scripts/dev/seed-db.sh new file mode 100755 index 0000000..c30e13c --- /dev/null +++ b/scripts/dev/seed-db.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e +cd "$(dirname "$0")" + +source ../prod/db-setup.sh + +flask add-domain finn.st +flask add-domain stutzenste.in +flask reset-admin admin@finn.st admin diff --git a/scripts/db-setup.sh b/scripts/prod/db-setup.sh similarity index 68% rename from scripts/db-setup.sh rename to scripts/prod/db-setup.sh index 9b6129e..1e195c6 100755 --- a/scripts/db-setup.sh +++ b/scripts/prod/db-setup.sh @@ -15,6 +15,6 @@ wait-for-it --timeout=15 "$PGSQL_HOST:$PGSQL_PORT" # Create schema in postgresql export PGPASSWORD="$PGSQL_PASSWORD" -psql -1 -h "$PGSQL_HOST" -p "$PGSQL_PORT" -U "$PGSQL_USER" -d "$PGSQL_NAME" -f max/db/schema.sql +psql -1 -v ON_ERROR_STOP=1 -h "$PGSQL_HOST" -p "$PGSQL_PORT" -U "$PGSQL_USER" -d "$PGSQL_NAME" -f "$(dirname "${BASH_SOURCE[0]}")/schema.sql" echo "end db setup" diff --git a/scripts/entrypoint.sh b/scripts/prod/entrypoint.sh similarity index 100% rename from scripts/entrypoint.sh rename to scripts/prod/entrypoint.sh diff --git a/max/db/schema.sql b/scripts/prod/schema.sql similarity index 100% rename from max/db/schema.sql rename to scripts/prod/schema.sql diff --git a/scripts/setup.cfg b/setup.cfg similarity index 100% rename from scripts/setup.cfg rename to setup.cfg