felicity-lims/dc.traefik.prod.yaml
2023-02-27 00:46:31 +02:00

118 lines
3.9 KiB
YAML

version: '3.5'
services:
felicity_proxy: # new
build:
context: ./services/traefik
dockerfile: Dockerfile.traefik
ports:
- 80:80
- 443:443
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./traefik-public-certificates:/certificates"
labels:
- "traefik.enable=true"
- "traefik.http.routers.dashboard.rule=Host(`dashboard.felicity.com`) && (PathPrefix(`/`)"
- "traefik.http.routers.dashboard.tls=true"
- "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
- "traefik.http.routers.dashboard.service=api@internal"
- "traefik.http.routers.dashboard.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=testuser:$$apr1$$jIKW.bdS$$eKXe4Lxjgy/rH65wP1iQe1"
felicity_fe:
container_name: felicity_fe
restart: unless-stopped
build:
context: ./frontend
volumes:
- ./frontend:/app
ports:
- "3000:3000"
depends_on:
- felicity_be
networks:
- felicitynet
command: bash -c "cd vite && pnpm dev --host --port 3000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.frontend.rule=Host(`frontend.felicity.com`)"
- "traefik.http.routers.frontend.tls=true"
- "traefik.http.routers.frontend.tls.certresolver=letsencrypt"
- "traefik.http.services.frontend.loadbalancer.server.port=3000"
felicity_be:
container_name: felicity_be
restart: unless-stopped
build:
context: ./backend/
environment:
- POSTGRES_SERVER=felicity_db
- POSTGRES_DB=felicity_lims
- POSTGRES_USER=felicity
- POSTGRES_PASSWORD=felicity
- POSTGRES_HOST_AUTH_METHOD=trust
- DATABASE_URL=postgresql://felicity:felicity@felicity_db:5432/felicity_lims
volumes:
- ./backend/:/app
ports:
- 8000:8000
depends_on:
- felicity_db
networks:
- felicitynet
command: bash -c "cd felicity_lims && ./felicity.sh"
labels:
- "traefik.enable=true"
- "traefik.http.routers.backend.rule=Host(`backend.felicity.com`)"
- "traefik.http.routers.backend.tls=true"
- "traefik.http.routers.backend.tls.certresolver=letsencrypt"
- "traefik.http.services.backend.loadbalancer.server.port=8000"
felicity_db:
container_name: felicity_db
image: postgres:12
restart: unless-stopped
environment:
- POSTGRES_DB=felicity_lims
- POSTGRES_USER=felicity
- POSTGRES_PASSWORD=felicity
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- ./postgres/init/:/docker-entrypoint-initdb.d/
- db-data:/var/lib/postgresql/data
ports:
- 5434:5432
networks:
- felicitynet
felicity_pgadmin:
container_name: felicity_pgadmin
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-admin@pgadmin.org}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
volumes:
- pgadmin:/root/.pgadmin
ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- felicitynet
restart: unless-stopped
depends_on:
- felicity_db
labels:
- "traefik.enable=true"
- "traefik.http.routers.pgadmin.rule=Host(`pgadmin.felicity.com`)"
- "traefik.http.routers.pgadmin.tls=true"
- "traefik.http.routers.pgadmin.tls.certresolver=letsencrypt"
- "traefik.http.services.pgadmin.loadbalancer.server.port=80"
volumes:
db-data:
pgadmin:
traefik-public-certificates:
networks:
felicitynet:
driver: bridge