base structure

This commit is contained in:
Julian Krauser 2025-01-26 10:54:51 +01:00
parent bb73e1e370
commit 9bc9fdc386
7 changed files with 229 additions and 1 deletions

48
Dockerfile Normal file
View file

@ -0,0 +1,48 @@
FROM docker:23.0.1-cli-alpine3.17
# Installiere docker-compose
RUN apk add --no-cache docker-compose
# Arbeitsverzeichnis
WORKDIR /app
RUN mkdir -p /app/icons
RUN mkdir -p /app/database
RUN mkdir -p /app/files
# Kopiere die docker-compose.yml und die Nginx-Konfiguration
COPY docker-compose.yml .
COPY nginx.conf ./nginx.conf
COPY ./icons ./icons
ENV DOCKER_HOST=unix:///var/run/docker.sock
ENV SERVERADDRESS=""
ENV APPNAMEOVERWRITE=""
ENV IMPRINTLINK=""
ENV PRIVACYLINK=""
ENV CUSTOMLOGINMESSAGE=""
ENV JWT_SECRET=""
ENV JWT_EXPIRATION=""
ENV REFRESH_EXPIRATION=""
ENV PWA_REFRESH_EXPIRATION=""
ENV MAIL_USERNAME=""
ENV MAIL_PASSWORD=""
ENV MAIL_HOST=""
ENV MAIL_PORT=""
ENV MAIL_SECURE=""
ENV CLUB_NAME=""
ENV CLUB_WEBSITE=""
ENV BACKUP_INTERVAL=""
ENV BACKUP_COPIES=""
ENV BACKUP_AUTO_RESTORE=""
ENV MYSQL_DATABASE=""
ENV MYSQL_USER=""
ENV MYSQL_PASSWORD=""
ENV MYSQL_ROOT_PASSWORD=""
EXPOSE 80 3306
# Standardbefehl: docker-compose starten
CMD ["docker-compose", "up"]

View file

@ -1,3 +1,72 @@
# ff-admin-aio
All in One Repository to ff-admin
Administration für Feuerwehren und Vereine (all-in-one).
## Einleitung
Dieses Projekt, `ff-admin-aio`, ist das Gesamt-Projekt zur Verwaltung von Mitgliederdaten.\
Die zugehörige Webapp ist im Repository [ff-admin-ui](https://forgejo.jk-effects.cloud/Ehrenamt/ff-admin) zu finden.\
Der zugehörige Server ist im Repository [ff-admin-server](https://forgejo.jk-effects.cloud/Ehrenamt/ff-admin-server) zu finden.
Eine Demo zusammen mit der `ff-admin` finden Sie unter [https://admin-demo.ff-admin.de](https://admin-demo.ff-admin.de).
## Installation
Das Image exposed die Ports 80 und 3306.
### Docker Compose Setup
Um den Container hochzufahren, erstellen Sie eine `docker-compose.yml` Datei mit folgendem Inhalt:
```yaml
version: "3"
services:
ff-admin-aio:
image: docker.registry.jk-effects.cloud/ehrenamt/ff-admin/aio:latest
container_name: ff_member_administration_aio
restart: unless-stopped
environment:
- SERVERADDRESS=""
- APPNAMEOVERWRITE=""
- IMPRINTLINK=""
- PRIVACYLINK=""
- CUSTOMLOGINMESSAGE=""
- JWT_SECRET=""
- JWT_EXPIRATION=""
- REFRESH_EXPIRATION=""
- PWA_REFRESH_EXPIRATION=""
- MAIL_USERNAME=""
- MAIL_PASSWORD=""
- MAIL_HOST=""
- MAIL_PORT=""
- MAIL_SECURE=""
- CLUB_NAME=""
- CLUB_WEBSITE=""
- BACKUP_INTERVAL=""
- BACKUP_COPIES=""
- BACKUP_AUTO_RESTORE=""
- MYSQL_DATABASE=""
- MYSQL_USER=""
- MYSQL_PASSWORD=""
- MYSQL_ROOT_PASSWORD=""
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # verpflichtende Angabe
- <volume|local path>:/app/files
- <volume|local path>:/app/database
- <volume|local path>:/app/icons
```
Führen Sie dann den folgenden Befehl im Verzeichnis der compose-Datei aus, um den Container zu starten:
```sh
docker-compose up -d
```
## Fragen und Wünsche
Bei Fragen, Anregungen oder Wünschen können Sie sich gerne melden.\
Wir freuen uns über Ihr Feedback und helfen Ihnen gerne weiter.\
Schreiben Sie dafür eine Mail an julian.krauser@jk-effects.com.

84
docker-compose.yml Normal file
View file

@ -0,0 +1,84 @@
version: '3.8'
services:
ff_admin_aio_reverse_proxy:
image: nginx:alpine
container_name: ff_admin_aio_reverse_proxy
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- ff_admin_aio_backend
- ff_admin_aio_frontend
ff_admin_aio_frontend:
image: docker.registry.jk-effects.cloud/ehrenamt/ff-admin/app:latest
container_name: ff_admin_aio_frontend
restart: unless-stopped
ports:
- "80"
environment:
- SERVERADDRESS=${SERVERADDRESS}
- APPNAMEOVERWRITE=${APPNAMEOVERWRITE}
- IMPRINTLINK=${IMPRINTLINK}
- PRIVACYLINK=${PRIVACYLINK}
- CUSTOMLOGINMESSAGE=${CUSTOMLOGINMESSAGE}
volumes:
- ./icons/favicon.ico:/usr/share/nginx/html/favicon.ico
- ./icons/favicon.png:/usr/share/nginx/html/favicon.png
- ./icons/Logo.png:/usr/share/nginx/html/Logo.png
ff_admin_aio_backend:
image: docker.registry.jk-effects.cloud/ehrenamt/ff-admin/server:latest
container_name: ff_admin_aio_backend
restart: unless-stopped
ports:
- "5000"
environment:
- DB_TYPE=mysql
- DB_HOST=ff_admin_aio_database
- DB_PORT=3306
- DB_NAME=${MYSQL_DATABASE}
- DB_USERNAME=${MYSQL_USER}
- DB_PASSWORD=${MYSQL_PASSWORD}
- JWT_SECRET=${JWT_SECRET}
- JWT_EXPIRATION=${JWT_EXPIRATION}
- REFRESH_EXPIRATION=${REFRESH_EXPIRATION}
- PWA_REFRESH_EXPIRATION=${PWA_REFRESH_EXPIRATION}
- MAIL_USERNAME=${MAIL_USERNAME}
- MAIL_PASSWORD=${MAIL_PASSWORD}
- MAIL_HOST=${MAIL_HOST}
- MAIL_PORT=${MAIL_PORT}
- MAIL_SECURE=${MAIL_SECURE}
- CLUB_NAME=${CLUB_NAME}
- CLUB_WEBSITE=${CLUB_WEBSITE}
- BACKUP_INTERVAL=${BACKUP_INTERVAL}
- BACKUP_COPIES=${BACKUP_COPIES}
- BACKUP_AUTO_RESTORE=${BACKUP_AUTO_RESTORE}
volumes:
- ./files:/app/files
networks:
- ff_admin_aio_internal
depends_on:
- ff_admin_aio_database
ff_admin_aio_database:
image: mariadb:11.2
container_name: ff_admin_aio_database
restart: unless-stopped
ports:
- "3306:3306"
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- ./database:/var/lib/mysql
networks:
- ff_admin_aio_internal
networks:
ff_admin_aio_internal:

BIN
icons/Logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
icons/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
icons/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

27
nginx.conf Normal file
View file

@ -0,0 +1,27 @@
events { }
http {
server {
listen 80;
# Weiterleitung von /api/* an das Backend
location /api/ {
proxy_pass http://ff_admin_aio_backend:5000/; # Verweise auf den internen Backend-Service
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# Weiterleitung aller anderen Anfragen an das Frontend
location / {
proxy_pass http://ff_admin_aio_frontend:80/; # Verweise auf den internen Frontend-Service
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}