version: "3.6"

services:
 mapserver_frontend:
  image: node:alpine3.13
  volumes:
   - "dev_home:/root"
   - ".:/data"
  working_dir: /data/public
  command: ["npm", "i"]
 
 mapserver:
  image: golang:1.16.0
  depends_on:
   - minetest
   - mapserver_frontend
  volumes:
   - "dev_home:/root"
   - "world_data:/data/world"
   - ".:/data"
   - "./public:/data/world/public"
   - "./dev/mapserver.json:/data/world/mapserver.json"
  ports:
   - "8080:8080"
  working_dir: /data/world
  command: ["go", "run", ".."]

 minetest:
  image: registry.gitlab.com/minetest/minetest/server:5.4.0
  user: root
  volumes:
   - "world_data:/root/.minetest/worlds/world"
   - "./dev/worldmods:/root/.minetest/worlds/world/worldmods"
   - "./dev/minetest.conf:/etc/minetest/minetest.conf"
   - "./dev/mapserver.json:/root/.minetest/worlds/world/mapserver.json"
  ports:
   - "30000:30000/udp"

volumes:
  world_data: {}
  dev_home: {}