version: '3'
services:
  cms:
    container_name: cms
    build: .
    image: cms:latest
    restart: unless-stopped
    env_file: .env
    environment:
      DATABASE_CLIENT: ${DATABASE_CLIENT}
      DATABASE_HOST: cmsDB
      DATABASE_NAME: ${DATABASE_NAME}
      DATABASE_USERNAME: ${DATABASE_USERNAME}
      DATABASE_PORT: ${DATABASE_PORT}
      JWT_SECRET: ${JWT_SECRET}
      ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
      DATABASE_PASSWORD: ${DATABASE_PASSWORD}
      NODE_ENV: ${NODE_ENV}
    volumes:
      - ./config:/opt/app/config
      - ./src:/opt/app/src
      - ./package.json:/opt/package.json
      - ./yarn.lock:/opt/yarn.lock
      - ./.env:/opt/app/.env
      - ./public/uploads:/opt/app/public/uploads
    ports:
      - '${PORT}:${PORT}'
    networks:
      - cms
    depends_on:
      - cmsDB
      
  cmsDB:
    container_name: cmsDB
    platform: linux/amd64 ## For platform error on Apple M1 chips
    restart: unless-stopped
    env_file: .env
    image: postgres:12.0-alpine
    environment:
      POSTGRES_USER: ${DATABASE_USERNAME}
      POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
      POSTGRES_DB: ${DATABASE_NAME}
    volumes:
      - cms-data:/var/lib/postgresql/data/ ## using a volume
      #- ./data:/var/lib/postgresql/data/  ## if you want to use a bind folder
    ports:
      - '${DATABASE_PORT}:${DATABASE_PORT}'
    networks:
      - cms

volumes:
  cms-data:

networks:
  cms:
    name: CMS
    driver: bridge