services: db: container_name: arcadia_db image: postgres:18.0 restart: always # set shared memory limit when using docker-compose shm_size: 128mb # or set shared memory limit when deploy via swarm stack #volumes: # - type: tmpfs # target: /dev/shm # tmpfs: # size: 134217728 # 128*2^20 bytes = 128Mb volumes: - db_data:/var/lib/postgresql/ ports: - 4321:5432 env_file: - backend/api/.env.docker - backend/api/.env healthcheck: test: ["CMD-SHELL", "pg_isready -U arcadia"] interval: 5s timeout: 5s retries: 5 init_db: container_name: init_db env_file: - backend/api/.env.docker - backend/api/.env build: context: ./ dockerfile: backend/api/Dockerfile target: builder command: sh -c "/init_db.sh" working_dir: /app volumes: - ./backend/storage/scripts/init_db.sh:/init_db.sh depends_on: db: condition: service_healthy redis: image: redis container_name: arcadia_redis restart: always ports: - 6379:6379 volumes: - redis_data:/data env_file: - backend/api/.env.docker - backend/api/.env command: sh -c "redis-server --requirepass $$REDIS_PASSWORD" backend: container_name: arcadia_backend build: context: ./ dockerfile: backend/api/Dockerfile ports: - 8080:8080 env_file: - backend/api/.env.docker - backend/api/.env develop: watch: - path: ./backend/api action: rebuild - path: ./backend/api action: restart include: - .env.docker tracker: container_name: arcadia_tracker build: context: ./ dockerfile: tracker/arcadia_tracker/Dockerfile ports: - 8081:8081 env_file: - tracker/arcadia_tracker/.env.docker - tracker/arcadia_tracker/.env develop: watch: - path: ./tracker/arcadia_tracker action: rebuild - path: ./tracker/arcadia_tracker action: restart include: - .env.docker depends_on: backend: condition: service_healthy frontend: container_name: arcadia_frontend build: context: frontend dockerfile: Dockerfile ports: - 5173:80 env_file: - frontend/.env.docker - frontend/.env develop: watch: - path: ./frontend/dist action: sync target: /usr/share/nginx/html - path: ./frontend/docker/nginx.conf action: sync+restart target: /etc/nginx/conf.d/default.conf volumes: db_data: redis_data: