Skip to main content

Overview

Deploy any public Docker image directly to Ardor without writing code or Dockerfiles. This is the fastest way to get a service running — perfect for databases, caches, proxies, and pre-built applications.
Cerebrum can do this for you. Just say “add a PostgreSQL database” or “deploy Redis” — Cerebrum will create and configure the service. The steps below are for when you want to do it manually.
New to Docker? Docker images are pre-packaged applications ready to run. Think of them as “app installers” that include everything needed — code, runtime, libraries, and configuration.

Why Use Docker Images

Zero build time

Skip the build process entirely. Images are pulled and deployed in seconds.

Battle-tested software

Use official images maintained by software vendors — PostgreSQL, Redis, Nginx, and thousands more.

Version control

Pin specific versions with tags. Roll back instantly by changing the tag.

No code required

Deploy infrastructure services without writing a single line of code.
Best for: Databases, caches, message queues, reverse proxies, and any pre-built application available on Docker Hub.

Before You Start

Know your image name! There’s no Docker Hub search yet — you’ll need to type the exact image name and tag. Good news: images from your previous deployments are cached, so you can quickly find and reuse them.
Currently, Ardor supports public Docker images from Docker Hub. Private registries are coming soon.
Ardor reads port configuration directly from the image metadata. You typically don’t need to change this unless you have specific requirements.
Ardor extracts environment variables defined in the image automatically. However, some images require additional variables (like passwords) that must be set manually. Check the image documentation for required variables.Environment variables extracted from image

Deployment Process

Step 1Click Add Service → select Docker Image
Some images need extra setup (like POSTGRES_PASSWORD for databases). Check Common Docker Images below for specific requirements.

Image Name Format

Docker images follow this naming convention:
[registry/]repository:tag
FormatExampleDescription
image:tagnginx:1.25Official image with specific version
image:latestredis:latestLatest version (not recommended for production)
image:variantnode:20-alpineVariant builds (alpine = smaller size)
user/image:tagbitnami/postgresql:16Community/vendor image
Cached Images: When you type an image name, Ardor suggests previously deployed images from the cache. Don’t see your image? You’ll be the first to add it — and you’ll help the whole community! The cache is shared, so every new image makes Ardor smarter for everyone.
Avoid using :latest in production. Pin specific versions like postgres:16.2 to ensure consistent deployments.

Common Docker Images

Here are popular images and their typical configurations:
Image: postgres:16Port: 5432 (auto-detected)Manual Variables Required:
VariableDescriptionExample
POSTGRES_PASSWORDDatabase password (required)mysecretpassword
POSTGRES_USERUsername (optional)myuser
POSTGRES_DBDatabase name (optional)myapp
PostgreSQL will not start without POSTGRES_PASSWORD. Add it as a secret before deploying.
Recommended Resources: 0.5 CPU, 1GB RAM, 10GB Storage

Configuration Options

Automatic Port Detection

Ardor automatically reads the exposed port from the Docker image metadata. In most cases, you don’t need to configure the port manually.
Only override the auto-detected port if you have specific requirements and know exactly what port the image expects.

Resource Allocation

Different images have different resource requirements:
Image TypeCPURAMStorage
Databases (PostgreSQL, MySQL)0.5 - 21GB - 4GB10GB+
Caches (Redis, Memcached)0.25 - 1512MB - 2GB
Web servers (Nginx, Caddy)0.1 - 0.5128MB - 512MB
Message queues (RabbitMQ)0.5 - 1512MB - 2GB5GB+

Visibility

  • Private (recommended for databases): Only accessible within your solution’s internal network
  • Public: Accessible via a public URL (use for web servers, APIs)
Never expose databases publicly. Use Private visibility and connect from other services via the internal URL.

Persistent Storage

Enable storage for stateful services like databases. Data persists across restarts and redeployments.
Without persistent storage, all data is lost when the container restarts. Always enable storage for databases.

Connecting Services

After deploying a Docker image service, connect to it from other services using environment variables:
import os
import psycopg2

# Ardor injects these variables automatically for connected services
db_host = os.environ.get('POSTGRES_SERVICE_HOST')
db_port = os.environ.get('POSTGRES_SERVICE_PORT')

conn = psycopg2.connect(
    host=db_host,
    port=db_port,
    user='myuser',
    password=os.environ.get('POSTGRES_PASSWORD'),
    database='myapp'
)

Networking

Learn more about connecting services and configuring internal URLs.

Updating Images

To update to a new image version:
  1. Open the service settings
  2. Change the image tag (e.g., postgres:16.1postgres:16.2)
  3. Click Deploy
Ardor pulls the new image and replaces the running container.
For databases, always back up your data before updating to a new major version.

Troubleshooting

Cause: Image name or tag doesn’t exist on Docker Hub.Solution:
  • Verify the image name on Docker Hub
  • Check for typos in the image name or tag
  • Ensure the image is public (private registries not yet supported)
Cause: Missing required environment variables or incorrect configuration.Solution:
  • Check the image documentation for required variables
  • Review Runtime Logs for error messages
  • Ensure the configured port matches what the image expects
Cause: Service not ready or network misconfiguration.Solution:
  • Wait for the service to finish initializing (check logs)
  • For private services, ensure you’re connecting from within the solution network
  • Ports are auto-detected — if you changed the port manually, verify it matches the image’s actual exposed port
Cause: Persistent storage not enabled.Solution:
  • Enable storage in the service resource configuration
  • Set appropriate storage size for your data needs
  • Redeploy the service
Cause: Insufficient RAM allocated for the image.Solution:
  • Increase RAM allocation in resource settings
  • Consider using lighter image variants (e.g., -alpine)
  • Check if the image has memory configuration options

What’s Next