Docker Deploy
If your application already has a Docker image, or you want to use a custom Dockerfile for full control over the build process, Docker deployment is the most direct option.
Using Public Images
Section titled “Using Public Images”You can deploy directly from Docker Hub or other public image registries:
- Create a new application in the Piora dashboard
- Select “Docker Image” as the deployment source
- Enter the image name and tag
# Image name examplesnginx:alpinenode:20-alpinepostgres:16ghost:5-alpineUsing Private Registries
Section titled “Using Private Registries”Piora supports connecting to private image registries:
Docker Hub Private Repositories
Section titled “Docker Hub Private Repositories”Add Docker Hub credentials in the application settings:
- Username — Your Docker Hub account
- Password/Token — Docker Hub access token
GitHub Container Registry (GHCR)
Section titled “GitHub Container Registry (GHCR)”ghcr.io/your-org/your-image:latestRequires a GitHub Personal Access Token with read:packages permission.
Self-Hosted Registries
Section titled “Self-Hosted Registries”Supports any private registry compatible with Docker Registry API v2:
registry.example.com/your-image:latestPort Configuration
Section titled “Port Configuration”When deploying Docker images, you need to specify the port your application listens on:
| Setting | Description | Example |
|---|---|---|
| Container port | Port the app listens on inside the container | 3000 |
| Protocol | HTTP or TCP | HTTP |
Traefik automatically routes external traffic to the specified container port — no manual port mapping needed.
Environment Variables
Section titled “Environment Variables”Set environment variables for containers in the dashboard:
NODE_ENV=productionDATABASE_URL=postgresql://user:pass@db:5432/appREDIS_URL=redis://redis:6379SECRET_KEY=your-secret-keyPersistent Storage
Section titled “Persistent Storage”Docker containers are stateless by default — data is lost when containers restart. If your application needs persistent data:
- Add a “Volume” in the application settings
- Specify the mount path inside the container
# Example: mount a data directoryContainer path: /app/dataVolume name: my-app-dataHealth Checks
Section titled “Health Checks”Configure health checks to ensure containers are running correctly before receiving traffic:
- Check path — HTTP endpoint (e.g.,
/health) - Check interval — Time between each check
- Timeout — Maximum time to wait for a response
- Retries — How many consecutive failures before marking unhealthy
Updating Images
Section titled “Updating Images”When you need to update to a new image version:
- Update the image tag (if using a fixed version)
- Click “Redeploy” in the dashboard
- Piora pulls the latest image and performs a rolling update
If using the latest tag, clicking redeploy will automatically pull the newest version.