---
version: "3.5"

networks:
  penpot:

volumes:
  penpot_postgres_data:
  penpot_assets_data:

services:
  penpot-frontend:
    image: "penpotapp/frontend:latest"
    ports:
      - 9001:80

    volumes:
      - penpot_assets_data:/opt/data

    env_file:
      - config.env

    depends_on:
      - penpot-backend
      - penpot-exporter

    networks:
      - penpot

  penpot-backend:
    image: "penpotapp/backend:latest"
    volumes:
      - penpot_assets_data:/opt/data

    depends_on:
      - penpot-postgres
      - penpot-redis

    env_file:
      - config.env

    networks:
      - penpot

  penpot-exporter:
    image: "penpotapp/exporter:latest"
    environment:
      # Don't touch it; this uses internal docker network to
      # communicate with the frontend.
      - PENPOT_PUBLIC_URI=http://penpot-frontend
    networks:
      - penpot

  penpot-postgres:
    image: "postgres:13"
    restart: always
    stop_signal: SIGINT

    environment:
      - POSTGRES_INITDB_ARGS=--data-checksums
      - POSTGRES_DB=penpot
      - POSTGRES_USER=penpot
      - POSTGRES_PASSWORD=penpot

    volumes:
      - penpot_postgres_data:/var/lib/postgresql/data

    networks:
      - penpot

  penpot-redis:
    image: redis:6
    restart: always
    networks:
      - penpot
