base structure
This commit is contained in:
parent
bb73e1e370
commit
9bc9fdc386
7 changed files with 229 additions and 1 deletions
48
Dockerfile
Normal file
48
Dockerfile
Normal 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"]
|
71
README.md
71
README.md
|
@ -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
84
docker-compose.yml
Normal 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
BIN
icons/Logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
icons/favicon.ico
Normal file
BIN
icons/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.4 KiB |
BIN
icons/favicon.png
Normal file
BIN
icons/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
27
nginx.conf
Normal file
27
nginx.conf
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in a new issue