Skip to main content
[ PIER ]

Docker Image

Deploy any pre-built image from a registry — no build step.

Application #docker#container

The simplest possible deploy — pick a Docker image by name, set the port and any env vars, and ship. Pier pulls the image, runs the container, attaches it to Traefik for HTTPS, and gives you logs / restart / env controls. No build, no Dockerfile, no Compose.

Deploy with Pier

  1. 1 Open the Pier dashboard and click Add service.
  2. 2 Pick Docker Image from the template list.
  3. 3 Choose the version, set a service name, and Pier provisions the container, storage, and ports automatically.
  4. 4 Attach a domain if you want HTTPS. Traefik auto-provisions the Let's Encrypt certificate.

What is Docker Image on Pier?

The most stripped-down deploy template — paste a Docker image reference, set ports / env vars / volumes / domain, and Pier runs it. No Dockerfile, no Compose YAML, no build step. Useful any time someone says “docker pull this image and run it” and you’d like the result to be a managed Pier service rather than a hand-rolled docker run on the host.

Pier wires the container into its Traefik-fronted network for HTTPS, manages volumes you declare, exposes env-var and command overrides, and gives you the same logs / restart / redeploy controls you get with native templates.

How Pier deploys it

You give Pier the image name (e.g. nginx:latest or ghcr.io/your-org/your-app:v1.2.3), the internal port the image listens on, optional volumes and env vars, and a domain.

Pier pulls the image, starts the container with the configured volumes and env, attaches Traefik routes for HTTPS termination at the chosen domain, and persists the container across host restarts.

For private registries, add credentials in Pier Settings → Registries before deploying — Pier uses them when pulling.

Updates — click Redeploy to force a fresh pull of the configured tag. To upgrade to a new version, edit the image reference and redeploy.

When NOT to use Docker Image

When you have source code but no pre-built image, use the Dockerfile or Railpack template — they build for you. When the service is multi-container, use Docker Compose. When a native Pier template exists for the service (PostgreSQL, Gitea, Grafana, …), the dedicated template comes with managed backups, version selectors, and lifecycle features the generic template doesn’t have.

Key features

Any image from any registry

Docker Hub, GitHub Container Registry (ghcr.io), Quay, GitLab Registry, AWS ECR, Google Artifact Registry — anything pullable works.

One field — the image name

nginx:latest, postgres:17-alpine, ghcr.io/your-org/your-app:v1.2.3 — paste the image reference, that's it.

Env vars, ports, volumes

Pier UI for adding env vars, mapping ports, attaching persistent volumes. Same controls as native templates.

Private registry auth

Add registry credentials in Pier; subsequent pulls authenticate. Per-registry credentials supported.

HTTPS via Traefik

Attach a custom domain and Traefik handles TLS termination. No reverse proxy to configure.

Logs + restart + redeploy

Tail logs, restart, force a fresh pull-and-deploy of the same tag (or pin a digest) from the UI.

Use cases

Off-the-shelf services

nginx, postgres, redis, any community-maintained image — deploy without writing config.

Your own pre-built images

CI builds an image and pushes to ghcr.io / your registry. Pier pulls and runs.

Trying community projects

A GitHub project says "docker pull foo/bar". You paste foo/bar:latest into Pier and have it running.

Lightweight sidecars

A single small image — backup runner, log shipper, metric exporter, tunnel — deployed alongside your other services.

Fast prototyping

Spin up an image, test, destroy. The image-name dropdown is the fastest path to a running container.

Code examples

Plain nginx text
Image: nginx:latest
Internal port: 80
Domain: site.example.com   (attach in Pier)
→ Pier pulls, runs, fronts with HTTPS
Your CI-built image text
Image: ghcr.io/your-org/my-api:v2.3.0
Internal port: 8080
Env vars:
  DATABASE_URL = postgres://...
  API_KEY = sk-...
Volume: /app/uploads → pier-managed
Private registry credentials text
Pier Settings → Registries → Add
  Registry: ghcr.io
  Username: your-org-bot
  Password: <PAT with read:packages scope>
Subsequent pulls authenticate automatically.
Pinning a digest (immutable deploy) text
Image: nginx@sha256:abcdef0123...
→ Pier pulls this exact digest forever — no "latest" surprises

How it compares

vs Dockerfile (this catalog) Dockerfile builds an image from your source. Docker Image runs a pre-built image you already have. Use Image when CI builds for you; Dockerfile when you want Pier to build.
vs Railpack (this catalog) Railpack auto-detects your language and builds without a Dockerfile. Docker Image runs an image you've already built elsewhere. Different points in the build/deploy chain.
vs Docker Compose (this catalog) Compose runs multiple containers together. Docker Image runs one. Use Image for single-service apps; Compose for multi-service.
vs Native Pier templates Native templates (PostgreSQL, Gitea, Grafana, ...) come pre-wired with backups, version selectors, scaling features. Docker Image is the generic escape hatch for anything not natively templated.

Frequently asked questions

What if the image needs special args / commands?
Pier exposes a "Command" override field. Replace the image's default CMD/ENTRYPOINT.
How do volumes work?
Pick mount points in the UI. Pier creates managed volumes that show up in the volumes page.
Can I pin a specific tag or digest?
Yes — use foo/bar:1.2.3 or foo/bar@sha256:... Pinning a digest is the most reproducible option.
Resource limits?
Pier UI has CPU and memory limit fields per container.
How does Traefik routing work?
Pier auto-creates Traefik routes based on the domain you attach. You don't add Compose-style labels — Pier does it for you.
Private images?
Add registry credentials in Pier settings. Per-image authentication is also supported.
How to update?
Click "Redeploy" — Pier pulls the latest of the configured tag and rolls the container. To deploy a different tag, edit the image field.

Related services

Deploy on your VPS

The simplest possible deploy — pick a Docker image by name, set the port and any env vars, and ship. Pier pulls the image, runs the container, attaches it to Traefik for HTTPS, and gives you logs / restart / env controls. No build, no Dockerfile, no Compose.

Deploy this service →