version: '3.9' services: postgres: image: postgres:16 container_name: budget_postgres restart: always environment: POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: ${DB_NAME} ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data backend: build: ./backend container_name: budget_backend restart: always env_file: - .env ports: - "5000:5000" environment: DB_HOST: ${DB_HOST} DB_USER: ${DB_USER} DB_PASSWORD: ${DB_PASSWORD} DB_NAME: ${DB_NAME} depends_on: - postgres frontend: build: ./frontend container_name: budget_frontend restart: always ports: - "3000:3000" depends_on: - backend nginx: image: nginx:latest container_name: budget_nginx restart: always ports: - "80:80" - "443:443" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ./nginx/certbot:/var/www/certbot - /etc/letsencrypt:/etc/letsencrypt depends_on: - frontend - backend volumes: postgres_data: