version: "3" services: db: image: postgres:12-alpine restart: on-failure volumes: - postgres-data:/var/lib/postgresql/data environment: POSTGRES_USER: plane POSTGRES_DB: plane POSTGRES_PASSWORD: plane command: postgres -c 'max_connections=1000' redis: image: redis:6.2.7-alpine restart: on-failure command: redis-server --maxmemory-policy allkeys-lru --maxmemory 200mb plane_web: container_name: plane_web build: context: . dockerfile: ./apps/plane/Dockerfile restart: always ports: - 3000:3000 networks: - app_network plane_api: container_name: plane_api build: context: ./apiserver dockerfile: Dockerfile restart: always ports: - 8000:8000 environment: SENTRY_DSN: $SENTRY_DSN WEB_URL: $WEB_URL DATABASE_URL: postgres://plane:plane@db/plane REDIS_URL: redis://redis SECRET_KEY: $SECRET_KEY networks: - app_network depends_on: - db - redis command: python manage.py migrate && gunicorn plane.wsgi -k gthread --workers 8 --bind 0.0.0.0:8000 --config gunicorn.config.py --max-requests 10000 --max-requests-jitter 1000 --access-logfile - networks: app_network: external: true volumes: postgres-data: