# Services

A service is one container image, or the image built from your code, with the settings it runs with and its addresses. Most of what you run here is a service: a web app, an API, a worker, a cache. (Databases, computers, static sites and buckets are services or sit beside them, and have sections of their own.)

## Where it comes from

- **Your code**, built from its Dockerfile with one command from your directory, your CI or your agent: [deploying your code](/docs/deploying-code).
- **A docker-compose file**, a whole stack at once: [docker-compose stacks](/docs/compose).
- **A published image**, from Docker Hub or any registry: [container images](/docs/images).
- **A ready-made stack**, an app with its database: [one-click deploys](/docs/one-click).

## Public or private

- **Public**: it gets an HTTPS address and [sleeps when idle](/docs/sleeping), unless you say otherwise. The next request wakes it.
- **Private**: no address on the internet, only `name:port` inside its project. Use this for workers and anything only your other services call. Private services always run.

## While it runs

Every change to what runs is a [deployment](/docs/deployments), with a log and a way back. It runs in a container with the memory and cores [it's given](/docs/containers), with its [variables and secrets](/docs/variables-and-secrets) in its environment and, if it keeps data on disk, [volumes](/docs/volumes). It can [scale](/docs/scaling) to more containers under load, and a [preview](/docs/previews) of its project is a copy to try a change in.
