version: '3' services: db: container_name: feishin_db image: postgres:13 volumes: - ${DATABASE_PERSIST_PATH}:/var/lib/postgresql/data environment: - POSTGRES_USER=${DATABASE_USERNAME} - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=${DATABASE_NAME} ports: - '${DATABASE_PORT}:5432' restart: unless-stopped server: container_name: feishin_server volumes: - ./server:/app # Synchronise docker container with local change - /app/node_modules # Avoid re-copying local node_modules. Cache in container. build: context: ./server dockerfile: Dockerfile depends_on: - db environment: - APP_BASE_URL=${APP_BASE_URL} - DATABASE_URL=postgresql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@db/${DATABASE_NAME}?schema=public&connection_limit=14&pool_timeout=20 - DATABASE_PORT=${DATABASE_PORT} - TOKEN_SECRET=${TOKEN_SECRET} - TOKEN_EXPIRATION=${TOKEN_EXPIRATION} - TOKEN_REFRESH_EXPIRATION=${TOKEN_REFRESH_EXPIRATION} ports: - '8643:9321' restart: unless-stopped prisma: container_name: feishin_prisma_studio volumes: - ./server/prisma:/app/prisma build: context: ./server/prisma dockerfile: Dockerfile depends_on: - db - server environment: - DATABASE_URL=postgresql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@db/${DATABASE_NAME}?schema=public ports: - '5555:5555' restart: unless-stopped