A Compose Generator With Opinions About Your Stack

Most Docker tutorials produce a file that works once on the author's laptop. This site produces the file you would write after the third time it broke: pinned tags, healthchecks, named volumes, non-root users, secrets outside the YAML.

What the Generators Decide for You

The Compose generator turns a short form per service into a file that follows the Compose Specification. Its decisions are the ones that save a support ticket later: named volumes are declared automatically, dependants use condition: service_healthy when the target has a healthcheck, healthcheck commands are chosen by image (pg_isready for Postgres, redis-cli ping for Redis and so on), restart: unless-stopped is the default, and anything that looks like a password can be moved to a .env file with one checkbox. Presets for Node with Postgres, Python with Redis, PHP with nginx and MySQL, WordPress and a static site give you a known-good starting point to edit.

The Dockerfile generator is built around layer caching: dependency manifests are copied and installed before the source, so a code change rebuilds in seconds. It uses a multi-stage build by default, cleans package caches on the same line that creates them, creates an unprivileged user and switches to it before CMD, writes CMD in the exec form so the process receives signals, adds a HEALTHCHECK, and produces a .dockerignore to match.

What the validator does and does not do

The validator reads a pasted Compose file with a small YAML reader written for the block style Compose uses, or a Dockerfile instruction by instruction, and explains each line in one sentence. Then it runs about forty checks: the obsolete version key, unpinned or latest tags, container_name, privileged and host-network services, deprecated links, colliding host ports, published database ports, undeclared volumes, plain-text secrets, depends_on targets that do not exist, missing restart policies and healthchecks; on the Dockerfile side, ADD where COPY would do, apt-get without cleanup, pip without --no-cache-dir, source copied before dependencies are installed, shell-form CMD, no USER, no HEALTHCHECK. It does not run Docker, pull images or evaluate variables, so it cannot promise a file will start, only that the things it can see are right.

When something is wrong

If a generated file or a validator finding is wrong, the contact page says what to send. For the Apache side of a PHP stack, our sister tool htaccess.tools writes the .htaccess to go with it.