56 lines
1.4 KiB
YAML
56 lines
1.4 KiB
YAML
services:
|
||
mariadb:
|
||
image: mariadb:11
|
||
container_name: annas_mariadb
|
||
restart: unless-stopped
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: rootpassword
|
||
MYSQL_DATABASE: annas_rechnungen
|
||
MYSQL_USER: annas_user
|
||
MYSQL_PASSWORD: annas_password
|
||
volumes:
|
||
- mariadb_data:/var/lib/mysql
|
||
networks:
|
||
- app_network
|
||
healthcheck:
|
||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||
start_period: 10s
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 5
|
||
|
||
app:
|
||
image: annasrechnungsmanager:latest
|
||
container_name: annas_app
|
||
restart: unless-stopped
|
||
ports:
|
||
- "3000:3000"
|
||
environment:
|
||
DATABASE_URL: mysql://annas_user:annas_password@mariadb:3306/annas_rechnungen
|
||
AUTH_SECRET: ${AUTH_SECRET}
|
||
NODE_ENV: production
|
||
# Beim ersten Start: Admin-Benutzer (username: admin) anlegen oder Passwort setzen.
|
||
# Danach kann diese Variable entfernt werden.
|
||
ADMIN_PASSWORD: ${ADMIN_PASSWORD:admin}
|
||
depends_on:
|
||
mariadb:
|
||
condition: service_healthy
|
||
networks:
|
||
- app_network
|
||
command: >
|
||
sh -c "
|
||
npx prisma migrate deploy &&
|
||
if [ -n \"$ADMIN_PASSWORD\" ]; then
|
||
echo 'ADMIN_PASSWORD gesetzt – Admin-Benutzer wird eingerichtet...' &&
|
||
node scripts/setup-admin.js;
|
||
fi &&
|
||
npm run start
|
||
"
|
||
|
||
volumes:
|
||
mariadb_data:
|
||
|
||
networks:
|
||
app_network:
|
||
driver: bridge
|