90 lines
2.4 KiB
YAML
90 lines
2.4 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
postgres-server:
|
|
image: postgres:16.0
|
|
container_name: postgres-filekeeper
|
|
environment:
|
|
POSTGRES_PASSWORD: VerySecretPassword
|
|
volumes:
|
|
- postgres:/var/lib/postgresql/data
|
|
networks:
|
|
- filekeeper
|
|
|
|
redis:
|
|
image: redis:7.4.0
|
|
container_name: redis-filekeeper
|
|
command: ["redis-server", "--requirepass", "VerySecretPassword"]
|
|
networks:
|
|
- filekeeper
|
|
|
|
filekeeper:
|
|
image: fossyy/filekeeper:latest
|
|
container_name: filekeeper
|
|
environment:
|
|
SERVER_HOST: 0.0.0.0
|
|
SERVER_PORT: 8000
|
|
DOMAIN: filekeeper.example.com
|
|
CORS_PROTO: https
|
|
CORS_LIST: filekeeper.example.com:443,example.com:443
|
|
CORS_METHODS: POST,GET
|
|
DB_HOST: postgres-filekeeper
|
|
DB_PORT: 5432
|
|
DB_USERNAME: postgres
|
|
DB_PASSWORD: VerySecretPassword
|
|
DB_NAME: filekeeper
|
|
SMTP_HOST: mail.example.com
|
|
SMTP_PORT: 25
|
|
SMTP_USER: no-reply@example.com
|
|
SMTP_PASSWORD: VerySecretPassword
|
|
SESSION_NAME: Session
|
|
SESSION_MAX_AGE: 604800
|
|
REDIS_HOST: redis-filekeeper
|
|
REDIS_PORT: 6379
|
|
REDIS_PASSWORD: VerySecretPassword
|
|
volumes:
|
|
- /opt/filekeeper/uploads:/src/uploads
|
|
networks:
|
|
- filekeeper
|
|
- traefik
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.filekeeper.rule=Host(`filekeeper.example.com`)"
|
|
- "traefik.http.routers.filekeeper.entrypoints=websecure"
|
|
- "traefik.http.routers.filekeeper.tls.certresolver=myresolver"
|
|
- "traefik.http.services.filekeeper.loadbalancer.server.port=8000"
|
|
depends_on:
|
|
- postgres-server
|
|
- redis
|
|
restart: on-failure
|
|
|
|
traefik:
|
|
image: traefik:v2.8
|
|
container_name: traefik
|
|
command:
|
|
- "--api.insecure=true"
|
|
- "--providers.docker=true"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
- "--entrypoints.websecure.address=:443"
|
|
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
|
|
- "--certificatesresolvers.myresolver.acme.email=bagas@example.com"
|
|
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
- "8080:8080"
|
|
volumes:
|
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
|
- "/opt/letsencrypt:/letsencrypt"
|
|
networks:
|
|
- filekeeper
|
|
- traefik
|
|
|
|
networks:
|
|
filekeeper:
|
|
traefik:
|
|
|
|
volumes:
|
|
postgres:
|
|
letsencrypt:
|