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
|
# 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