version: "3.6"

services:
  db:
    image: mongo:4.1.3-xenial
    expose:
      - "27017"
    networks:
      backend:
        ipv4_address: 128.1.0.2

  backend:
    image: lateinicus/server
    expose:
      - "8080"
    depends_on:
        - db
    networks:
      backend:
        ipv4_address: 128.1.0.3

  proxy:
    image: nginx:1.15.4-alpine
    ports:
      - "80:80"
      - "443:443"
    networks:
      - outside
      - backend
    volumes:
      # TODO: DEBUG
      - ./server/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./frontend/dist/:/srv/www/:ro
      - ./server/ssl.key.pem:/etc/ssl/lateinicus.key:ro
      - ./server/ssl.pem:/etc/ssl/lateinicus.pem:ro
    depends_on:
      - backend
      

# The outside network is needed to only expose the reverse
# proxy to the outside
networks:
  backend:
    driver: bridge
    internal: yes
    driver_opts:
      com.docker.network.bridge.name: 'backend'
    ipam:
      driver: default
      config:
        - subnet: 128.1.0.0/8
  outside:
    driver: bridge
