A dockerized demonstration of distributed rAthena deployments.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
rathena/conf/import
Dockerfile
deploy.sh
license
readme.md

readme.md

rathena-docker

Dockerized rAthena for local testing.

The project consists of two main components:

  • a Dockerfile to create a single self-contained and fully configured image
  • a deploy.sh script to help automate building and deployment for testing

Testing in isolated containers is a sure-fire way to avoid the "it works on my system" problem, and without the overhead of full virtualization.

dependencies

This project requires docker, a host with bash, and the debian:jessie image from the public docker registry.

configuration

All configuration is handled via inputs through deploy.sh. For automation support do not modify existing defaults within rathena/conf/import/, though you are welcome to add to them.

The only configurable settings are the prere, packetver, and repo versions. While I would like to add more, the complexity it adds and time to finish would be significant, and the original goal of this project has failed due to limitations of the technology.

usage

Simply run ./deploy.sh and follow the interactive prompts. You can pre-emptively set environment variables to answer the questions, for details view the source.

preemptive faq

  • why dockerize rathena?
    • primarily to make it easy to isolate a predictable build environment so newcomers can easily get rathena up and running, and so developers have a quick play-test instance to work with.
  • why a single image with mysql preloaded?
    • docker limitations with regard to post-runtime configuration forced my hand, but reducing complexity and subsequently human error are the positives.
  • can I distribute the container?
    • I think anyone would be ill-advised to use docker for production deployments, and this image does not produce an efficient server instance.

notes

I spent roughly three weeks tinkering, and concluded that any attempts to use docker exec and docker run to modify the instance prior to starting up rathena components, such as would be required to tailor the system for distributed computing, were simply not supported.

Attempts to do this led to zombied processes and a whole lot of reading on how docker enforces single-processes. This seems to be fine using CMD to startup the database and server using docker create, but it has zero flexibility once the image has been built.