Skip to main content

Overview

Dokploy can deploy pre-built Docker images directly from container registries, bypassing the build process. This is ideal for:
  • Pre-built Images - Deploy official images from Docker Hub
  • CI/CD Integration - Deploy images built in external pipelines
  • Multi-Architecture - Use registry-built multi-arch images
  • Private Images - Deploy proprietary images from private registries

Docker Source Type

Configure an application to use Docker images as the source:

Public Docker Images

Deploy publicly available images without authentication.

Docker Hub

Deploy images from Docker Hub:

GitHub Container Registry

Deploy public images from GHCR:

Other Public Registries

Private Docker Images

Deploy images from private registries with authentication.

Docker Hub Private

Authenticate with Docker Hub:
1

Create Access Token

  1. Log in to Docker Hub
  2. Go to Account Settings > Security
  3. Click New Access Token
  4. Set description and permissions:
    • Read - Pull images only
    • Read, Write - Pull and push images
  5. Copy the token (shown only once)
2

Configure Application

GitHub Container Registry Private

Authenticate with GitHub:
1

Create GitHub Token

  1. Go to GitHub Settings > Developer settings
  2. Click Personal access tokens > Tokens (classic)
  3. Generate new token with scopes:
  4. Copy the token
2

Configure Authentication

AWS Elastic Container Registry

Authenticate with AWS ECR:
1

Generate ECR Token

This outputs a token valid for 12 hours.
2

Configure Application

AWS ECR tokens expire after 12 hours. Consider using IAM roles or automated token refresh.

Azure Container Registry

Authenticate with Azure ACR:
1

Enable Admin Access

2

Get Credentials

Use the username and password from the output.

Self-Hosted Registry

Authenticate with private registries:

Registry Integration

Use configured registry credentials for better management.

Create Registry Configuration

First, add a registry in Dokploy:
See Container Registry for detailed registry configuration.

Deploy with Registry

Dokploy automatically uses configured registries for authentication:
Registry credentials are matched by URL and automatically applied during deployment.

Image Tags and Updates

Tag Strategies

Best for: Production deployments with controlled updates
Best for: Development environments, always get latest changes
Using latest in production can lead to unexpected updates. Pin specific versions.
Best for: Reproducible deployments, exact version tracking
Best for: Environment-specific configurations

Updating Images

Redeploy to pull the latest image:
Dokploy will:
  1. Pull the latest version of the image
  2. Stop the current container
  3. Start a new container with the updated image

Multi-Architecture Images

Deploy images that support multiple CPU architectures:
Docker automatically pulls the correct architecture for your server:
  • amd64 - x86_64 Intel/AMD processors
  • arm64 - ARM 64-bit (Apple Silicon, AWS Graviton)
  • arm/v7 - ARM 32-bit (Raspberry Pi)
  • arm/v6 - Older ARM devices
Multi-arch images use Docker manifests. The registry sends the correct image variant automatically.

CI/CD Integration

Integrate Dokploy with external CI/CD pipelines.

GitHub Actions

GitLab CI

Bitbucket Pipelines

Image Verification

Verify images before deployment.

Image Scanning

Scan images for vulnerabilities:

Image Signing

Verify image authenticity:

Configuration Examples

Production Application

Staging with Latest

Third-Party Service

Best Practices

Image Management

Pin Versions

Always use specific tags in production:

Small Images

Use minimal base images:

Regular Updates

Keep base images updated:

Clean Tags

Remove unused image tags:

Security

  1. Scan Images - Use vulnerability scanning before deployment
  2. Private Registries - Store proprietary images in private registries
  3. Access Tokens - Use tokens instead of passwords
  4. Rotate Credentials - Change registry passwords regularly
  5. Least Privilege - Grant minimal registry permissions

Performance

  1. Registry Location - Use registries geographically close to servers
  2. Image Layers - Optimize Dockerfile layers for caching
  3. Compress Images - Use tools like docker-slim to reduce size
  4. Parallel Pulls - Enable parallel layer downloads

Troubleshooting

Symptoms:
Solutions:
  1. Verify credentials are correct:
  2. Check username and password in application config
  3. Ensure registry URL matches:
  4. Verify user has access to the repository
Symptoms:
Solutions:
  1. Verify image name and tag are correct
  2. Check image exists in registry:
  3. Ensure tag was pushed:
  4. Try alternative tag (e.g., latest)
Symptoms: Container fails with “exec format error”Solutions:
  1. Verify server architecture:
  2. Check image supports your architecture:
  3. Build for correct architecture:
  4. Use multi-arch images when possible
Symptoms:
Solutions:
  1. Authenticate with Docker Hub (increases rate limit)
  2. Upgrade to Docker Hub Pro plan
  3. Use alternative registries (GHCR, Quay.io)
  4. Cache images locally:

API Reference

Save Docker Provider

Update Docker Image

Next Steps

Registry Configuration

Configure container registries

Environment Variables

Configure application settings

Build Configuration

Build custom images

Monitoring

Monitor deployments