version: '3.7'

services:
  main:
    container_name: main
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - ${SERVER_PORT}:${SERVER_PORT}
    env_file:
      - .env
    networks:
      - webnet
    depends_on:
      - postgres

  postgres:
    container_name: postgres
    image: postgres:12
    env_file:
      - .env
    networks:
      - webnet
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      PG_DATA: /var/lib/postgresql/data
    ports:
      - ${DB_PORT}:5432
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: "redis:alpine"
    container_name: redis
    restart: always
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
    volumes:
      - .:/data
    env_file:
      - .env
    ports:
      - ${REDIS_PORT}:6379


networks:
  webnet:
    driver: bridge
volumes:
  pgdata:
