← All Tools
Docker Compose Builder🔒 100% local
Generate docker-compose.yml. Privacy-first, no server uploads, no tracking.
Related Tools
Turns comma-separated service lines into a docker-compose.yml skeleton. Each line is name, image, optional port mapping, then any extra fields: a field containing an equals sign becomes an environment entry (except restart=, which sets the restart policy) and a field containing a colon becomes a volume mount. The YAML is assembled as text, with a container_name and a restart policy added to every service.
How to use it
- Write one service per line, for example web, nginx, 80:80.
- Append extra fields on the same line as more comma-separated values, such as NODE_ENV=production or ./data:/app/data.
- Press Process, then copy the fenced YAML out of the output box and save it as docker-compose.yml.
Worked example
web, nginx, 80:80, restart=always
api, node:20-alpine, 3000:3000, NODE_ENV=production, ./data:/app/databecomesGenerated docker-compose.yml for 2 services:
```yaml
version: "3.9"
services:
web:
image: nginx
container_name: web
restart: always
ports:
- "80:80"
api:
image: node:20-alpine
container_name: api
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- "./data:/app/data"
environment:
NODE_ENV: production
```The default restart policy is unless-stopped, which is why only the web service reads always - it was set explicitly.
When to use it
- Sketching a two- or three-container setup before you commit to writing the real file.
- Producing a starting compose file for a demo, a tutorial, or a colleague's machine.
- Getting the ports, volume, and environment indentation right without hand-typing YAML.
What it does not do
- The version line is always "3.9", and there is no support for networks, depends_on, healthcheck, build, or command.
- Everything about a service must be on one line. A field with neither an equals sign nor a colon is discarded without telling you.
- Nothing is validated - a typo in an image tag, a duplicate host port, or an unusable volume path is copied through exactly as typed.