version: "3.3"

volumes:
  # For steamcmd files and resource files used by the scripts
  homedir_main:
  # For Steam, for now
  homedir_server:
  # Where the server files will be installed
  serverfiles:
  # Server profile files
  profiles:
  # Upstream mission files
  servermpmissions:
  # Server mission files
  mpmissions:
  # Mods
  mods:

services:

  web:
    build:
      context: web
      args:
        - USER_ID
    user: ${USER_ID}
    volumes:
      - homedir_main:/home/user
      - serverfiles:/serverfiles
      - servermpmissions:/serverfiles/mpmissions
      - mods:/serverfiles/steamapps/workshop/content
      - mods:/mods
      - ./files:/files
      - ./web/bin/dz:/usr/local/bin/dz
      - ./web:/web
    ports:
      - "8001:8001/tcp"
      - "8000:8000/tcp"
    restart: always
    env_file:
      - .env

  server:
    build:
      context: server
      args:
        - USER_ID
    user: ${USER_ID}
    volumes:
      - homedir_server:/home/user
      - serverfiles:/serverfiles
      - servermpmissions:/mpmissions:ro
      - mods:/mods
      - mpmissions:/serverfiles/mpmissions
      - profiles:/profiles
      - ./files:/files
      - ./server/bin/dz:/usr/local/bin/dz
    # To have the server show up in the LAN tab of the DayZ launcher,
    # it must run under host mode.
    network_mode: host
    # The above is mutually exclusive with the below. If you don't need
    # the server to show up on the LAN, comment out the network_mode above
    # and uncomment the port mappings below.
#    ports:
#       # Game port
#      - 2302:2302/udp
#       # RCON port
#      - 2303:2303/udp
#       # Steam port
#      - 27016:27016/udp
    # Always restart, unless stopped
    restart: unless-stopped
    # Allows attaching a debugger from the host
#    cap_add:
#      - SYS_PTRACE
    # Allows core files to be created within the container. These are VERY LARGE! Enable only for debugging!
    # One must also set the sysctl kernel.core_pattern parameter ON THE HOST to a path that is writable within the container. YMMV
#    ulimits:
#      core:
#        soft: -1
#        hard: -1
    env_file:
      - .env