Files
ExcaliDash/PUBLISHING.md
T
Zimeng Xiong e87987a0a3 Dockerize
2025-11-22 09:18:20 -08:00

2.5 KiB

Publishing Docker Images

This document explains how to build and publish multi-platform Docker images for ExcaliDash.

Quick Start

# Login to Docker Hub (if not already logged in)
docker login

# Build and push images
./publish-docker.sh

Usage

./publish-docker.sh [VERSION]

Arguments:

  • VERSION (optional): The version tag for the images. Defaults to latest.

Examples:

# Build and push with 'latest' tag
./publish-docker.sh

# Build and push with version tag
./publish-docker.sh v1.0.0
./publish-docker.sh 2024.11.21

What It Does

  1. Checks Docker Hub authentication - Ensures you're logged in
  2. Sets up buildx builder - Creates or uses existing multi-platform builder
  3. Builds backend image - For linux/amd64 and linux/arm64 platforms
  4. Builds frontend image - For linux/amd64 and linux/arm64 platforms
  5. Pushes to Docker Hub - Uploads to zimengxiong/excalidash-backend and zimengxiong/excalidash-frontend

Supported Platforms

  • linux/amd64 - Intel/AMD x86_64 processors (most servers, PCs)
  • linux/arm64 - ARM 64-bit processors (Apple Silicon, ARM servers, Raspberry Pi 4+)

Requirements

  • Docker with buildx support (Docker Desktop or Docker Engine 19.03+)
  • Docker Hub account credentials
  • Internet connection for pushing images

Troubleshooting

"buildx" is not a docker command

Update Docker to a newer version that includes buildx, or install the buildx plugin.

Authentication error

Run docker login and enter your Docker Hub credentials.

Build fails on specific platform

You can modify the script to build for only one platform:

# In publish-docker.sh, change:
--platform linux/amd64,linux/arm64
# to:
--platform linux/amd64

Using Published Images

After publishing, users can run ExcaliDash using the pre-built images:

# Using production compose file (no build step needed)
docker compose -f docker-compose.prod.yml up -d

# Or using regular compose file (will pull if not building)
docker compose pull
docker compose up -d

CI/CD Integration

You can integrate this script into your CI/CD pipeline:

# Example GitHub Actions workflow
- name: Build and Push Docker Images
  env:
    DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
    DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
  run: |
    echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
    ./publish-docker.sh ${{ github.ref_name }}