# Docker Deployment

QuickDapp supports Docker deployment using pre-built binaries. This provides containerized deployment with minimal dependencies and configuration.

# Building Docker Image

Build a Docker image from your application:

# First build the binaries
bun run build

# Then build the Docker image
docker build -t quickdapp:latest .

# Running with Docker

# Basic Usage

Run the container with basic configuration:

docker run -d \
  --name quickdapp \
  -p 3000:3000 \
  -e DATABASE_URL="postgresql://user:pass@host:5432/db" \
  -e SESSION_ENCRYPTION_KEY="your_32_character_encryption_key" \
  -e SERVER_WALLET_PRIVATE_KEY="0xYourWalletKey" \
  quickdapp:latest

# Environment Configuration

Create an environment file for easier management:

# .env.docker
DATABASE_URL=postgresql://user:password@host:5432/quickdapp
SESSION_ENCRYPTION_KEY=your_secure_32_character_key
SERVER_WALLET_PRIVATE_KEY=0xYourWalletPrivateKey
CHAIN=sepolia
CHAIN_RPC_ENDPOINT=https://sepolia.infura.io/v3/your-api-key
FACTORY_CONTRACT_ADDRESS=0xYourContractAddress

Run with environment file:

docker run -d \
  --name quickdapp \
  -p 3000:3000 \
  --env-file .env.docker \
  quickdapp:latest

# Multi-Platform Support

Build for different architectures:

# Build for AMD64 and ARM64
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t quickdapp:latest \
  --push .

# Container Registry

Push to a container registry:

# Tag for registry
docker tag quickdapp:latest your-registry.com/quickdapp:latest

# Push to registry
docker push your-registry.com/quickdapp:latest

# Pull and run on production server
docker pull your-registry.com/quickdapp:latest
docker run -d --name quickdapp -p 3000:3000 --env-file .env.docker your-registry.com/quickdapp:latest

# Health Monitoring

The container includes health check endpoints:

# Check container health
curl http://localhost:3000/health

# Check container logs
docker logs quickdapp

# Monitor container stats
docker stats quickdapp

# Troubleshooting

# Common Issues

Container won't start:

# Check container logs
docker logs quickdapp

# Run interactively for debugging
docker run -it --rm quickdapp:latest /bin/bash

Port already in use:

# Use different port
docker run -d -p 3001:3000 --env-file .env.docker quickdapp:latest

Environment variable issues:

# Check environment variables inside container
docker exec quickdapp env | grep DATABASE_URL

Database connection problems:

# Test database connectivity from container
docker exec quickdapp ping your-db-host

Docker deployment provides a simple, consistent way to run QuickDapp across different environments with minimal setup requirements.