Docker isn't a specific tech stack, but a runtime environment - you provide your own Dockerfile or docker-compose.yml, and Saplo builds the image and runs it. This is the most flexible option in the entire catalog: if an application isn't available as a ready-made recipe (Ghost, n8n, WordPress, and others), but has an official Docker image or a compose file, you'll probably set it up here, without waiting for Saplo to add a dedicated recipe.
Who is Docker on Saplo for?
Before you start the installation, check if it's the right choice for your project:
- application with a ready-to-use Docker image - the tool you want to run publishes an official image on Docker Hub or GHCR,
- multiple services in one docker-compose file - application plus database, cache, or worker in one
docker-compose.yml, - a tool not available in the catalog as a separate recipe - Docker provides access to any software with an image, without waiting for a dedicated recipe,
- you have a project with your own Dockerfile and want full control over the runtime environment - dependencies, system library versions, you define everything yourself.
If your project is Django with a ready-to-use Dockerfile, also consider the dedicated Django stack - Saplo will build it natively (gunicorn, nginx for static files) without the need to write your own image.
Requirements
To run Docker on Saplo, you need:
- A Box on the L plan or higher - building an image requires more resources than a standard static build, and LXC must have the Docker daemon running (nesting=1).
- A minimum of 512 MB of free RAM and 3 GB of disk space for the starter alone; heavier images and builds require more.
- A domain or subdomain
*.saploapp.plincluded with every plan. - A Git repository if you want to use automatic deployment (optional to start, you can also upload the application as a
.ziparchive via the panel).
Step-by-step installation
- In the Saplo panel, go to App catalog and select Docker (under "Applications").
- Select a Box on plan L or higher and the application name - a default subdomain will be created from it.
- Confirm the installation. The engine installs Docker CE and the Docker Compose plugin on your Box if they are not already there.
- A
docker-compose.ymlstarter is created with thenginxdemos/helloimage mapped to the application port, launched with therestart: unless-stoppedoption - so you have something to see under the domain right away, before you deploy your own project. - After the installation is complete, the domain from step 2 shows a running starter container - from this point, you replace it with your own image or compose file.
Deploy your own code via Git
- In the app details, find the Git / CI-CD section and click "Connect GitHub", confirm the installation of the "Saplo Deploy" app, and select the repository with your project.
- In the repository, place
Dockerfileat the root of the project, ordocker-compose.ymlif the application consists of several services - Saplo detects which variant is in the repo and builds accordingly. - In the
saplo.yamlfile, specify the port on which your application listens using theexposefield - nginx will direct traffic from 80/443 to it. - Commit and push changes to the production branch (default is
main). Each subsequentgit pushbuilds a new image and replaces the container. - The image is built directly in your Box - heavier builds (large dependencies, native compilation) require a higher plan.
Example of a minimal saplo.yaml file for Docker:
name: my-project
stack: docker
expose: 8080
Docker on Saplo vs. Alternatives
| Your own VPS with Docker | Railway / Render (deploy from Dockerfile) | Docker on Saplo | |
|---|---|---|---|
| Docker daemon configuration | you do it yourself | fully managed | pre-installed, engine adds missing components |
| Deployments from Git | you have to set it up yourself (CI/CD, webhooks) | yes, natively | yes, git push to the production branch |
| Billing | fixed server cost | resource usage, grows with traffic | fixed Box cost |
| Multiple services in one project (compose) | you configure it yourself | usually limited to one container | docker-compose.yml detected automatically |
FAQ
Dockerfile or docker-compose - which one to choose? Both work. Dockerfile is enough for a single service, choose docker-compose when your application needs several containers together, e.g., a service plus Redis.
Can I have multiple containers in one compose file?
Yes, the entire docker-compose.yml file runs together, maintaining the network between services.
Is the image built on my Box, or externally? On your Box - hence the higher plan requirements for heavier builds than for simple static sites.
What about data that needs to survive a container restart? Volumes work as in regular Docker. Remember to enable backup in the application settings if the data needs to be protected.
Will I get SSL and my own domain?
Yes, the SSL certificate is automatic, and a domain or subdomain *.saploapp.pl is included with every plan.
With Saplo, you can set up Docker from scratch to a working domain in minutes, and each subsequent git push builds a new image and replaces the container without your involvement. If you're looking for a specific tool with a Docker image that isn't yet available as a ready-made recipe in the catalog, this is the fastest way to get it running.
- #Docker
- #Docker Compose
- #Git Deploy
- #Guide
