Makefile
This commit is contained in:
20
Dockerfile
20
Dockerfile
@@ -1,10 +1,16 @@
|
|||||||
FROM oven/bun:1.0.23
|
FROM postgres:latest
|
||||||
|
ENV POSTGRES_USER ${POSTGRES_USER}
|
||||||
|
ENV POSTGRES_PASSWORD ${POSTGRES_PASSWORD}
|
||||||
|
ENV POSTGRES_DB ${POSTGRES_DB}
|
||||||
|
|
||||||
EXPOSE 3000
|
COPY ./prisma/migrations/ /docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
WORKDIR /online-energieausweis
|
EXPOSE 5432
|
||||||
COPY ./package.json ./
|
|
||||||
COPY . .
|
|
||||||
RUN bun install --prod
|
|
||||||
|
|
||||||
CMD ["bun", "run", "build:production"]
|
# Use a loop to copy migration.sql from each folder to the corresponding directory in the build context
|
||||||
|
RUN for folder in /docker-entrypoint-initdb.d/*; do \
|
||||||
|
if [ -d "$folder" ]; then \
|
||||||
|
cp "$folder/migration.sql" "$folder.sql"; \
|
||||||
|
rm -rf "$folder"; \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
67
Makefile
67
Makefile
@@ -1,31 +1,59 @@
|
|||||||
.PHONY: dev database online-energieausweis all prod bun-install-database # api bun-install-api
|
.PHONY: dev online-energieausweis all prod backup run-database build-database install-dependencies wait-for-database prod database
|
||||||
|
|
||||||
|
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:
|
online-energieausweis:
|
||||||
bun run dev --host
|
bun run dev --host
|
||||||
|
|
||||||
dev: database online-energieausweis # api
|
dev: install-dependencies database online-energieausweis
|
||||||
|
|
||||||
database:
|
database:
|
||||||
$(MAKE) -C ../database dev
|
docker compose up
|
||||||
|
|
||||||
bun-install-database:
|
backup:
|
||||||
cd ../database
|
mkdir -p $(PERSISTENT_DIR)
|
||||||
bun link
|
- docker exec -t $(DB_CONTAINER_NAME) pg_dump --data-only -U $(DB_USER) $(DB_NAME) | gzip > $(BACKUP_FILENAME)
|
||||||
|
|
||||||
|
rundatabase: 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-fordatabase:
|
||||||
|
@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
|
bun install
|
||||||
|
|
||||||
# bun-install-api: bun-install-database
|
|
||||||
# cd ../api
|
|
||||||
# bun install
|
|
||||||
# bun link @ibcornelsen/database
|
|
||||||
|
|
||||||
# api:
|
|
||||||
# $(MAKE) -C ../api dev
|
|
||||||
|
|
||||||
all:
|
all:
|
||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
||||||
|
|
||||||
prod: bun-install-database # bun-install-api
|
prod: install-dependencies run-database
|
||||||
|
bun run build
|
||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
mkdir -p ~/persistent/online-energieausweis
|
mkdir -p ~/persistent/online-energieausweis
|
||||||
|
|
||||||
@@ -35,13 +63,6 @@ prod: bun-install-database # bun-install-api
|
|||||||
$(MAKE) prod; \
|
$(MAKE) prod; \
|
||||||
cd ../online-energieausweis; \
|
cd ../online-energieausweis; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Auch die API sollte bereits laufen
|
|
||||||
# @if [ $$(pm2 pid api) -eq "0" ]; then \
|
|
||||||
# cd ../api; \
|
|
||||||
# $(MAKE) prod; \
|
|
||||||
# cd ../online-energieausweis; \
|
|
||||||
# fi
|
|
||||||
|
|
||||||
- rm -f ~/online-energieausweis/.env;
|
- rm -f ~/online-energieausweis/.env;
|
||||||
- touch ~/online-energieausweis/.env;
|
- touch ~/online-energieausweis/.env;
|
||||||
@@ -49,4 +70,4 @@ prod: bun-install-database # bun-install-api
|
|||||||
- echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
- echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
||||||
|
|
||||||
- pm2 delete online-energieausweis
|
- pm2 delete online-energieausweis
|
||||||
pm2 start --name "online-energieausweis" --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- astro dev
|
pm2 start --name "online-energieausweis" --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- run ./server.ts
|
||||||
@@ -1,26 +1,8 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
ibcornelsen-online-energieausweis:
|
|
||||||
build: ./
|
|
||||||
command: bun run dev --host
|
|
||||||
environment:
|
|
||||||
PORT: 3000
|
|
||||||
NODE_ENV: "development"
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
volumes:
|
|
||||||
- ./:/online-energieausweis
|
|
||||||
- ./node_modules/@ibcornelsen/ui:/online-energieausweis/node_modules/@ibcornelsen/ui
|
|
||||||
- ./node_modules/@ibcornelsen/database:/online-energieausweis/node_modules/@ibcornelsen/database
|
|
||||||
# - ./node_modules/@ibcornelsen/api:/online-energieausweis/node_modules/@ibcornelsen/api
|
|
||||||
- ./node_modules/radix-svelte-icons:/online-energieausweis/node_modules/radix-svelte-icons
|
|
||||||
- ../api/persistent:/persistent
|
|
||||||
ibcornelsen-api:
|
|
||||||
extends:
|
|
||||||
file: ../api/docker-compose.yml
|
|
||||||
service: ibcornelsen-api
|
|
||||||
database:
|
database:
|
||||||
extends:
|
build: ./
|
||||||
file: ../database/docker-compose.yml
|
env_file:
|
||||||
service: database
|
- .env
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
@@ -5,9 +5,33 @@ export const createCaller = createCallerFactory({
|
|||||||
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
||||||
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
||||||
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
||||||
|
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||||
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
||||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||||
|
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
||||||
|
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
||||||
|
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||||
|
"geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"),
|
||||||
|
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
||||||
|
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
||||||
|
"geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"),
|
||||||
|
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
||||||
|
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
||||||
|
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
|
||||||
|
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
||||||
|
"user": await import("../src/pages/api/user/index.ts"),
|
||||||
|
"user/self": await import("../src/pages/api/user/self.ts"),
|
||||||
|
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
||||||
|
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
|
||||||
|
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||||
|
"verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"),
|
||||||
|
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
||||||
|
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||||
|
"aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"),
|
||||||
|
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"),
|
||||||
|
"aufnahme/[uid]/unterlagen": await import("../src/pages/api/aufnahme/[uid]/unterlagen.ts"),
|
||||||
|
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
|
||||||
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
||||||
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
||||||
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
||||||
@@ -15,30 +39,4 @@ export const createCaller = createCallerFactory({
|
|||||||
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
||||||
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
||||||
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
||||||
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
|
||||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
|
||||||
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
|
||||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
|
||||||
"geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"),
|
|
||||||
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
|
||||||
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
|
||||||
"geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"),
|
|
||||||
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
|
||||||
"geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"),
|
|
||||||
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
|
||||||
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
|
||||||
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
|
||||||
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
|
|
||||||
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
|
||||||
"user": await import("../src/pages/api/user/index.ts"),
|
|
||||||
"user/self": await import("../src/pages/api/user/self.ts"),
|
|
||||||
"verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"),
|
|
||||||
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
|
||||||
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
|
|
||||||
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
|
||||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
|
||||||
"aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"),
|
|
||||||
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"),
|
|
||||||
"aufnahme/[uid]/unterlagen": await import("../src/pages/api/aufnahme/[uid]/unterlagen.ts"),
|
|
||||||
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
|
|
||||||
})
|
})
|
||||||
Reference in New Issue
Block a user