# Fivemanage Lite — fuer den Betrieb, ueber Portainer aus diesem Repo. # # Abgeleitet aus den beiden Compose-Dateien im Projekt (fivemanage/lite) und # dem README. Deren docker-compose.yml ist fuer die ENTWICKLUNG: sie startet # Datenbank, ClickHouse, MinIO und Jaeger, aber nicht die Anwendung, und mit # Standardpasswoertern. Die docker-compose.test.yml zeigt dafuer, wie der # App-Container verdrahtet wird — und dass MySQL genuegt. # # Bewusst NICHT dabei: # # ClickHouse und Jaeger. Beides ist strukturiertes Logging und Tracing. Fuer # das Ablegen von Bildern braucht es sie nicht, und ClickHouse ist eine # schwere Abhaengigkeit. Nachruesten geht spaeter. # # Offene Ports. Nur der Reverse Proxy spricht mit der App; Datenbank und # MinIO bleiben im internen Netz. Zum Ausprobieren gibt es # docker-compose.local.yml — die macht es andersherum, und dort ist es # richtig. services: db: image: mysql:8 restart: unless-stopped environment: MYSQL_DATABASE: fivemanage_lite MYSQL_USER: lite MYSQL_PASSWORD: ${DB_PASSWORD:?bitte in .env oder als Stack-Variable setzen} MYSQL_RANDOM_ROOT_PASSWORD: "yes" volumes: - db:/var/lib/mysql networks: [internal] healthcheck: # Ohne das startet die App gegen eine Datenbank, die noch nicht # antwortet, und beendet sich — beim ersten Hochfahren jedes Mal. test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 12 minio: image: minio/minio:latest restart: unless-stopped command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: lite MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?bitte setzen} MINIO_SERVER_URL: ${PUBLIC_URL:?bitte setzen} volumes: - minio:/data networks: [internal, proxy] healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 10s timeout: 5s retries: 12 # Legt den Bucket an und stellt ihn auf oeffentlich lesbar. Laeuft einmal und # beendet sich. Ohne diesen Schritt schlaegt der erste Upload fehl, und die # Meldung nennt den Grund nicht. minio-init: image: minio/mc:latest depends_on: minio: condition: service_healthy environment: MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?bitte setzen} entrypoint: > /bin/sh -c " mc alias set local http://minio:9000 lite $$MINIO_ROOT_PASSWORD && mc mb --ignore-existing local/media && mc anonymous set download local/media && echo 'Bucket media ist bereit' " networks: [internal] restart: "no" lite: image: fivemanage/lite:0.1.0-beta.23 restart: unless-stopped depends_on: db: condition: service_healthy minio: condition: service_healthy environment: PORT: "8080" ENV: production DB_DRIVER: mysql # Go-MySQL-Form, wie in deren docker-compose.test.yml. DSN: lite:${DB_PASSWORD:?bitte setzen}@tcp(db:3306)/fivemanage_lite ADMIN_PASSWORD: ${ADMIN_PASSWORD:?bitte setzen} API_TOKEN_HMAC_SECRET: ${API_TOKEN_HMAC_SECRET:?bitte setzen} S3_PROVIDER: minio AWS_ENDPOINT: http://minio:9000 AWS_ACCESS_KEY_ID: lite AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:?bitte setzen} AWS_BUCKET: media AWS_REGION: auto networks: [internal, proxy] # KEIN ports: — der Reverse Proxy erreicht die App ueber das Netz `proxy`. # Wer hier 8080 aufmacht, hat die Oberflaeche ohne TLS im Internet. networks: internal: driver: bridge proxy: # Das Netz, in dem der bestehende Reverse Proxy haengt. name: ${PROXY_NETWORK:-proxy} external: true volumes: db: minio: