71 lines
2.1 KiB
Makefile
71 lines
2.1 KiB
Makefile
.PHONY: dev online-energieausweis all prod backup run-database build-database install-dependencies wait-for-database prod database prisma-studio backup-database-cronjob
|
|
|
|
DB_CONTAINER_NAME := database
|
|
DB_NAME := main
|
|
DB_USER := main
|
|
DB_PASSWORD := hHMP8cd^N3SnzGRR
|
|
DB_PORT := 5432
|
|
DB_VOLUME := postgres_data
|
|
PERSISTENT_DIR := $(HOME)/persistent/$(APP_NAME)
|
|
BACKUP_FILENAME := $(HOME)/backups/$(shell date +"%Y-%m-%d_%H-%M-%S").sql.gz
|
|
|
|
online-energieausweis:
|
|
bun run dev --host
|
|
|
|
dev: database online-energieausweis
|
|
|
|
database:
|
|
docker compose up
|
|
|
|
prisma-studio:
|
|
- pm2 delete prisma-studio
|
|
pm2 start --name "prisma-studio" bunx -- prisma studio
|
|
|
|
backup:
|
|
mkdir -p $(PERSISTENT_DIR)
|
|
- docker exec -t $(DB_CONTAINER_NAME) pg_dump --data-only -U $(DB_USER) $(DB_NAME) | gzip > $(BACKUP_FILENAME)
|
|
|
|
run-database: stop-database
|
|
docker volume rm -f $(DB_VOLUME)
|
|
docker volume create $(DB_VOLUME)
|
|
docker build -t $(DB_CONTAINER_NAME) .
|
|
docker run -d --name $(DB_CONTAINER_NAME) \
|
|
-e POSTGRES_USER=$(DB_USER) \
|
|
-e POSTGRES_PASSWORD=$(DB_PASSWORD) \
|
|
-p $(DB_PORT):5432 \
|
|
-v $(DB_VOLUME):/var/lib/postgresql/data \
|
|
-v $(PERSISTENT_DIR):/persistent \
|
|
$(DB_CONTAINER_NAME)
|
|
|
|
stop-database:
|
|
- docker stop $(DB_CONTAINER_NAME)
|
|
- docker rm $(DB_CONTAINER_NAME)
|
|
|
|
wait-for-database:
|
|
@while ! docker exec $(DB_CONTAINER_NAME) pg_isready -U $(DB_USER) -h localhost -p $(DB_PORT) > /dev/null 2>&1; do \
|
|
sleep 1; \
|
|
done
|
|
|
|
restore-backup:
|
|
gunzip -c $(BACKUP_FILENAME) | docker exec -i $(DB_CONTAINER_NAME) psql -U $(DB_USER) -d postgres
|
|
|
|
install-dependencies:
|
|
bun install
|
|
bunx prisma generate
|
|
|
|
all:
|
|
mkdir -p ~/logs
|
|
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
|
|
|
prod: install-dependencies prisma-studio backup-database-cronjob
|
|
bun run build
|
|
mkdir -p ~/logs
|
|
mkdir -p ~/persistent/online-energieausweis
|
|
|
|
- pm2 delete online-energieausweis
|
|
NODE_ENV="production" pm2 start --name "online-energieausweis" --update-env --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- run ./server.ts
|
|
pm2 save
|
|
|
|
backup-database-cronjob:
|
|
- pm2 delete daily-db-backup
|
|
pm2 start bash --name "daily-db-backup" --cron "0 0 * * *" -- backup-database.bash
|