diff --git a/postgresql.yaml b/postgresql.yaml new file mode 100644 index 0000000..6894cc0 --- /dev/null +++ b/postgresql.yaml @@ -0,0 +1,122 @@ +version: "3.6" +services: + postgresql: + stop_grace_period: 60s + env_file: + - postgresql.env + command: + - postgres + environment: + - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password + - POSTGRES_USER=${POSTGRES_USER} + secrets: + - postgresql_password + hostname: db + image: public.ecr.aws/docker/library/postgres:17 + networks: + - postgresql_db-backend +# - traefik_backend + - authentik_backend + ports: + - 5430:5432/tcp + volumes: + - /volume1/docker/PostgreSQL/data-17:/var/lib/postgresql/data + deploy: + labels: + - traefik.enable=true + - traefik.tcp.routers.postgres.entrypoints=postgresql + - traefik.tcp.routers.postgres.rule=HostSNI(`*`) + - traefik.tcp.services.postgres.loadbalancer.server.port=5432 + - traefik.tcp.routers.postgres.service=postgres + - traefik.swarm.network=traefik_backend +# resources: +# limits: +# cpus: '8' # Limit to 0.5 CPU core +# memory: 2G + placement: + constraints: + - node.labels.block != databases + - node.hostname == docker-2 + + databasus: + hostname: databasus + image: databasus/databasus:latest +# ports: +# - "4005:4005" + networks: + - traefik_backend + - postgresql_db-backend + volumes: + - /volume1/docker/databasus:/databasus-data +# - /volume1/SMB-docker/tmp:/tmp + deploy: + labels: + - traefik.enable=true + - traefik.http.routers.databasus.rule=Host(`${DATABASUS_HOST}`) + - traefik.http.routers.databasus.tls=true + - traefik.http.routers.databasus.tls.certresolver=letsencrypt + - traefik.http.routers.databasus.entrypoints=websecure + - traefik.http.services.databasus.loadbalancer.server.port=4005 + - traefik.swarm.network=traefik_backend +# - traefik.http.routers.databasus.middlewares=forwardAuth-authentik@file, crowdsec@file +# - traefik.http.routers.databasus.middlewares=auth +# - traefik.http.middlewares.auth.basicauth.users=test:$$2a$$12$$1sIFlNKcNrEApe2IScpFwukd7l1j/uvfxk0GeuqIk0BBcO9Mk2F2u +# resources: +# limits: +# cpus: '4' # Limit to 0.5 CPU core +# memory: 2G + + + pgadmin: + env_file: + - postgresql.env + image: dpage/pgadmin4:latest + environment: + PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL} + PGADMIN_DEFAULT_PASSWORD_FILE: /run/secrets/postgresql_pgadmin_password + PGADMIN_LISTEN_PORT: 80 + secrets: + - postgresql_pgadmin_password + volumes: + - "/volume1/docker/PostgreSQL Admin:/var/lib/pgadmin" +# - "/volume1/docker/PostgreSQL Backups:/var/lib/pgadmin/storage/avb_bryanmail.net" + ports: + - 3030:80 + networks: + - postgresql_db-backend + - traefik_backend + deploy: + labels: + - traefik.enable=true + - traefik.http.routers.pgadmin.rule=Host(`${PGADMIN_HOST}`) + - traefik.http.routers.pgadmin.tls=true + - traefik.http.routers.pgadmin.tls.certresolver=letsencrypt + - traefik.http.routers.pgadmin.entrypoints=websecure + - traefik.http.services.pgadmin.loadbalancer.server.port=80 + - traefik.swarm.network=traefik_backend +# - traefik.http.routers.pgadmin.middlewares=forwardAuth-authentik@file, crowdsec@file +# - traefik.http.routers.pgadmin.middlewares=auth +# - traefik.http.middlewares.auth.basicauth.users=test:$$2a$$12$$1sIFlNKcNrEApe2IScpFwukd7l1j/uvfxk0GeuqIk0BBcO9Mk2F2u + resources: + limits: + cpus: '1' # Limit to 0.5 CPU core + memory: 512M + +networks: + postgresql_db-backend: + name: postgresql_db-backend +# external: true + attachable: true + driver: overlay + driver_opts: + com.docker.network.driver.mtu: "8950" #broke database connections for things like vaultwarden and Immich + traefik_backend: + external: true + authentik_backend: + external: true + +secrets: + postgresql_password: + external: true + postgresql_pgadmin_password: + external: true