version: '3' services: maplestory: build: . depends_on: - db ports: # Published on the loopback interface only -- this fork is for local play. # Note: these mappings are inert here anyway, because this fork binds the login and channel # servers to 127.0.0.1 *inside* the container, which a published port cannot reach. # Login server - "127.0.0.1:8484:8484" # Channels. # Format: WWCC, where WW is 75 plus the world number and CC is 75 plus the channel number (both zero indexed). # In this case, world 1 channels 1-3. - "127.0.0.1:7575-7577:7575-7577" volumes: # Config changes can be reloaded without rebuilding the image. # Still requires a redeployment as they're sourced on startup. - ./config.yaml:/opt/server/config.yaml - ./scripts:/opt/server/scripts - ./wz:/opt/server/wz environment: DB_HOST: "db" ## Remember if this is present it will OVERRIDE the host in the config.yaml, if you put here anything other than db, you'll need to change the config.yaml jdbc string to port 3307, and not port 3306 db: image: mysql:8.4.0 environment: MYSQL_DATABASE: "cosmic" MYSQL_ROOT_PASSWORD: "" MYSQL_ALLOW_EMPTY_PASSWORD: yes ports: # Loopback only. This database has an empty root password (above), and a bare "3307:3306" # binds it to every interface -- Docker publishes ports past the host firewall on Linux. - "127.0.0.1:3307:3306" volumes: - ./database/docker-db-data:/var/lib/mysql