services: postgres: image: postgres:18-alpine container_name: 3dp-postgres restart: always environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - pg_data:/var/lib/postgresql/data networks: - app-network backend: build: ./server container_name: 3dp-backend restart: always depends_on: - postgres environment: DB_HOST: postgres DB_PORT: 5432 DB_USERNAME: ${POSTGRES_USER} DB_PASSWORD: ${POSTGRES_PASSWORD} DB_NAME: ${POSTGRES_DB} JWT_SECRET: ${JWT_SECRET} ADMIN_LOGIN: ${ADMIN_LOGIN} ADMIN_PASSWORD: ${ADMIN_PASSWORD} PORT: ${PORT} LOG_LEVEL: ${LOG_LEVEL} ALLOWED_ORIGINS: ${ALLOWED_ORIGINS:-} networks: - app-network frontend: build: ./client container_name: 3dp-frontend restart: always depends_on: - backend ports: - "80:80" networks: - app-network volumes: pg_data: networks: app-network: driver: bridge