> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sitecopilot.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Docker install

id: docker-install

## Preconditions

* Docker & Docker Compose installed (Docker Engine >= 20.x, Compose v2+)

* Domain name pointed to your host (for TLS)

* Optional: reverse proxy (Traefik / Nginx) to manage TLS and virtual hosts

## Recommended topology

* `sitecopilot` app container

* `mysql` container (MySQL 8.x)

* `redis` container

* Reverse proxy (Traefik) for TLS

## Example `docker-compose.yml`

```yaml theme={null}

version: '3.8'

services:

mysql:

image: mysql:8.0

environment:

MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

MYSQL_DATABASE: ${MYSQL_DATABASE}

MYSQL_USER: ${MYSQL_USER}

MYSQL_PASSWORD: ${MYSQL_PASSWORD}

volumes:

- db_data:/var/lib/mysql

restart: unless-stopped

  

redis:

image: redis:6-alpine

command: ["redis-server","--appendonly","yes"]

volumes:

- redis_data:/data

restart: unless-stopped

  

sitecopilot:

image: sitecopilot/sitecopilot:latest

depends_on:

- mysql

- redis

env_file: .env

ports:

- "8080:8080"

volumes:

- uploads:/app/uploads

restart: unless-stopped

  

volumes:

db_data:

redis_data:

uploads:

```

> Adjust `image` tag to a pinned version for production (e.g., `sitecopilot/sitecopilot:2025.09.1`).

## How to start

```bash theme={null}

# create .env (see docker-config page for variables)

docker compose up -d

# view logs

docker compose logs -f sitecopilot

```

## Health checks & readiness

* Ensure `sitecopilot` logs show successful DB and Redis connection and migrations applied.

* The app listens on port `8080` by default; route through your reverse proxy for TLS on 443.
