mirror of
https://github.com/Corfirean/coa-server-manager.git
synced 2026-11-11 03:51:01 +00:00
A server folder with Settings/docker.json is a Docker installation: MySQL, the auth server and the world server run in containers controlled through the docker command line. Every other folder is a repack and goes through the unchanged Windows code. driver::run, process::observe and layout::scan check for the marker first and hand over to coa_core::docker. - start: network, runtime image (libraries only, binaries are mounted from Core/), database healthy, world listening, then auth. A container that stops while starting reports the cause found in its log (DatabaseNotRunning, PortInUse, ...). New error code DockerUnavailable (docker missing, stopped, or not usable by this user). - stop: world (180 s to save), auth, database; exit code 0 observed. - observe: container state, health and port readiness mapped to the existing ServiceState. Readiness is a connection that stays open, because Docker's proxy accepts connections before the server inside listens. - passwords go by environment, never on a command line; the remote console is published on 127.0.0.1 only; the server's own database updater is turned off (it needs a mysql client the image does not have and stops the server). Tested: 18 new tests with an in-memory Docker, and a real run through examples/drive: database, world (ready in 11 s) and auth started from a package-shaped folder, stopped with exit code 0 and restarted. Not included: installation, database setup, backups and SQL through the container, updates, firewall/exposure, the client under Wine/Proton.