The "if and why" about the mangos docker-compose.yml


There a many ways to write an docker-compose.

For best practice - keep it simple as possible - all container named - network is defined as mangos - every container starts automatical, but can be stopped at any time
"restart: unless-stopped" - localtime is mapped into the container and also define in mangos.env
This is absolute recommend, because container can run in different timezones.

Alle containers depends on the database

The mariadb:latest is a debian based container.
Nothing needs to be rethink - debian and ubuntu - use the same command lines. ``` mangos-db: container_name: mangos-db image: mariadb:latest restart: unless-stopped env_file: - mangos.env networks: - mangos volumes: - /etc/localtime:/etc/localtime:ro - ./mariadb/:/var/lib/mysql - ./zero-database:/zero-database ``` As you can see at the last line the source from database is mapped into the container. This is normal needed once for initialization.

Next moangos login server

``` mangos-realm: image: mangos-realm build: context: ./app dockerfile: ../mangos/contrib/docker/realm/Dockerfile container_name: mangos-realm restart: unless-stopped ports: - target: 3724 published: 3724 protocol: tcp mode: host env_file: - mangos.env volumes: - /etc/localtime:/etc/localtime:ro - ./app/etc:/app/etc - ./logs:/app/logs depends_on: - mangos-db networks: - mangos ``` The part of ports is a little bit different and live on "host".

Why? All streams are transported into the container and ip address is changed.
How you wanne ban clients with the right ip address?
The mode "host" makes it possible. In this case it can be define only onces at running the host.

The configuration and logs are mapped as volume into the container.

Lets jump into the world server

``` mangos: image: mangos build: context: app dockerfile: ../mangos/contrib/docker/world/Dockerfile container_name: mangos restart: unless-stopped ports: - target: 8085 published: 8085 protocol: tcp mode: host - 7878:7878 env_file: - mangos.env volumes: - /etc/localtime:/etc/localtime:ro - ./app/etc:/app/etc - ./data:/app/data - ./logs:/app/logs depends_on: - mangos-db - mangos-realm networks: - mangos ``` In principal same stuff as on the realm service.
In additional we need the world data as volume.

The mangos network adapter

At the end we define an network adapter for the inner communication. ``` networks: mangos: name: mangos driver: bridge ``` Cheers