version: "3.8" services: app: build: context: . dockerfile: Dockerfile args: - MONGODB_URI=${MONGODB_URI} container_name: stripstream-app ports: - "3020:3000" volumes: - ./src:/app/src - ./prisma:/app/prisma - ./public:/app/public - ./package.json:/app/package.json - ./pnpm-lock.yaml:/app/pnpm-lock.yaml - ./tsconfig.json:/app/tsconfig.json - ./tailwind.config.ts:/app/tailwind.config.ts - ./postcss.config.js:/app/postcss.config.js - ./next.config.js:/app/next.config.js - /app/node_modules - /app/.next - ~/.pnpm-store:/app/.pnpm-store environment: - NODE_ENV=development - MONGO_USER=admin - MONGO_PASSWORD=password123 - MONGODB_URI=${MONGODB_URI} - PNPM_HOME=/app/.pnpm-store - WATCHPACK_POLLING=true - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} - NEXTAUTH_URL=${NEXTAUTH_URL} command: sh -c "pnpm config set store-dir /app/.pnpm-store && pnpm install --frozen-lockfile && pnpm prisma generate && pnpm dev" mongodb: image: mongo:latest container_name: stripstream_mongodb restart: always environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD} MONGO_INITDB_DATABASE: stripstream ports: - "27017:27017" volumes: - mongodb_data:/data/db - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro - ./mongo-keyfile:/data/keyfile:ro command: ["mongod", "--replSet", "rs0", "--bind_ip_all", "--keyFile", "/data/keyfile"] healthcheck: test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" | mongosh -u ${MONGO_USER} -p ${MONGO_PASSWORD} --authenticationDatabase admin --quiet interval: 10s timeout: 10s retries: 5 start_period: 40s volumes: mongodb_data: