version: '3.5' services: felicity-webapp: container_name: felicity-webapp restart: unless-stopped build: context: ./ target: webapp dockerfile: Dockerfile.dev volumes: - ./webapp/:/app/webapp environment: - NODE_ENV=development - VITE_NODE_ENV=development - VITE_APP_TITLE=Felicity Dev - VITE_BASE_URL=http://localhost:8000 ports: - "3000:3000" depends_on: - felicity-postgres networks: - felicitynet command: bash -c "pnpm webapp:dev --host --port 3000" felicity-api: container_name: felicity-api restart: unless-stopped build: context: ./ target: webapi dockerfile: Dockerfile.dev environment: - POSTGRES_SERVER=felicity-postgres - POSTGRES_DB=felicity_lims - POSTGRES_USER=felicity - POSTGRES_PASSWORD=felicity - POSTGRES_HOST_AUTH_METHOD=trust - LOAD_SETUP_DATA=${LOAD_SETUP_DATA:-False} - SERVE_WEBAPP=${SERVE_WEBAPP:-False} - REDIS_SERVER=felicity-dragonfly:6379 - MONGODB_SERVER=felicity-mongo:27017 - MONGODB_USER=felicity - MONGODB_PASS=felicity - MINIO_SERVER=felicity-minio:9000 - MINIO_ACCESS=felicity - MINIO_SECRET=felicity volumes: - ./felicity:/app/felicity ports: - 8000:8000 depends_on: - felicity-postgres networks: - felicitynet extra_hosts: - "host.docker.internal:host-gateway" command: bash -c "cd felicity && uvicorn main:felicity --reload --host=0.0.0.0 --port=8000" felicity-minio: container_name: felicity-minio image: bitnami/minio:2024.7.31 ports: - '9000:9000' - '9001:9001' networks: - felicitynet volumes: - 'minio_data:/data' environment: - MINIO_ROOT_USER=felicity - MINIO_ROOT_PASSWORD=felicity - MINIO_DEFAULT_BUCKET=felicity felicity-dragonfly: container_name: felicity-dragonfly image: 'docker.dragonflydb.io/dragonflydb/dragonfly' ulimits: memlock: -1 ports: - "6379:6379" # For better performance, consider `host` mode instead `port` to avoid docker NAT. # `host` mode is NOT currently supported in Swarm Mode. # https://docs.docker.com/compose/compose-file/compose-file-v3/#network_mode # network_mode: "host" volumes: - dragonflydata:/data networks: - felicitynet felicity-postgres: container_name: felicity-postgres image: postgres:12 restart: unless-stopped environment: - POSTGRES_DB=felicity_lims - POSTGRES_USER=felicity - POSTGRES_PASSWORD=felicity - POSTGRES_HOST_AUTH_METHOD=trust volumes: - ./services/postgres/init/:/docker-entrypoint-initdb.d/ - pg-data:/var/lib/postgresql/data ports: - 5434:5432 extra_hosts: - "host.docker.internal:host-gateway" networks: - felicitynet felicity-mongo: container_name: felicity-mongo image: mongo restart: always environment: MONGO_INITDB_ROOT_USERNAME: felicity MONGO_INITDB_ROOT_PASSWORD: felicity ports: - '27027:27017' networks: - felicitynet felicity-dbgate: container_name: felicity-dbgate image: dbgate/dbgate restart: always ports: - 8051:3000 volumes: - dbgate-data:/root/.dbgate environment: LOGIN: felicity PASSWORD: felicity CONNECTIONS: pg,mg LABEL_pg: Felicity Postgres SERVER_pg: felicity-postgres USER_pg: felicity PASSWORD_pg: felicity DATABASE_pg: felicity_lims PORT_pg: 5432 ENGINE_pg: postgres@dbgate-plugin-postgres READONLY_pg: 1 LABEL_mg: Felicity Mongo URL_mg: mongodb://felicity:felicity@felicity-mongo:27017/ DATABASE_mg: felicity ENGINE_mg: mongo@dbgate-plugin-mongo READONLY_mg: 1 networks: - felicitynet volumes: pg-data: pgadmin: minio_data: dragonflydata: dbgate-data: driver: local networks: felicitynet: driver: bridge