---
description: Build Docker image and push to Docker Hub for Coolify deployment
---

# Docker Build and Push Workflow

This workflow builds a Docker image locally and pushes it to Docker Hub so it can be deployed to Coolify.

## Prerequisites

1. **Docker Hub Account**: Make sure you have a Docker Hub account
2. **Docker Hub Login**: Log in to Docker Hub from your terminal

```bash
docker login
```

Enter your Docker Hub username and password when prompted.

## Workflow Steps

### 1. Build the Docker Image

Build your Docker image with a tag that includes your Docker Hub username:

```bash
docker build -t YOUR_DOCKERHUB_USERNAME/website-ricenoodletw-cms:latest .
```

Replace `YOUR_DOCKERHUB_USERNAME` with your actual Docker Hub username.

You can also add a specific version tag:

```bash
docker build -t YOUR_DOCKERHUB_USERNAME/website-ricenoodletw-cms:v1.0.0 .
```

### 2. (Optional) Test the Image Locally

Before pushing, you can test the image locally:

```bash
docker run -p 3000:3000 YOUR_DOCKERHUB_USERNAME/website-ricenoodletw-cms:latest
```

### 3. Push to Docker Hub

Push the image to Docker Hub:

```bash
docker push YOUR_DOCKERHUB_USERNAME/website-ricenoodletw-cms:latest
```

If you tagged a specific version, push that too:

```bash
docker push YOUR_DOCKERHUB_USERNAME/website-ricenoodletw-cms:v1.0.0
```

### 4. Deploy to Coolify

In your Coolify dashboard:

1. Create a new service or edit your existing service
2. Select **Docker Image** as the source
3. Enter your image name: `YOUR_DOCKERHUB_USERNAME/website-ricenoodletw-cms:latest`
4. Configure environment variables if needed
5. Deploy

Coolify will pull the image from Docker Hub and deploy it.

## Automated Deployment with Gitea Actions

Since building happens locally, the Gitea workflow only triggers Coolify deployment. Here's a sample workflow for `.gitea/workflows/deploy.yaml`:

```yaml
name: Deploy to Coolify

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Trigger Coolify Deployment
        run: |
          curl -X POST "${{ secrets.COOLIFY_WEBHOOK_URL }}"
```

### Setup Instructions:

1. **Get Coolify Webhook URL**:
   - In Coolify, go to your service settings
   - Find the "Webhooks" section
   - Copy the webhook URL

2. **Add to Gitea Secrets**:
   - Go to your repository in Gitea
   - Navigate to Settings → Secrets
   - Add `COOLIFY_WEBHOOK_URL` with the webhook URL from Coolify

### Workflow:

1. **Build and push locally** (steps 1-3 above)
2. **Push code to Gitea** - This triggers the Gitea workflow
3. **Gitea notifies Coolify** - Coolify pulls the latest image from Docker Hub
4. **Coolify redeploys** - Your service is updated with the new image

**Note**: Make sure your Coolify service is configured to use the Docker image from Docker Hub (`YOUR_DOCKERHUB_USERNAME/website-ricenoodletw-cms:latest`).
