# Docker Setup {#docker-setup}


Run Ever Gauzy components as Docker containers.


## Official Images {#official-images}


```bash
# API Server
docker pull ghcr.io/ever-co/gauzy-api:latest

# Web Application
docker pull ghcr.io/ever-co/gauzy-webapp:latest

# Demo (pre-seeded)
docker pull ghcr.io/ever-co/gauzy-api-demo:latest
docker pull ghcr.io/ever-co/gauzy-webapp-demo:latest
```


## Quick Start {#quick-start}



### Run API {#run-api}


```bash
docker run -d \
  --name gauzy-api \
  -p 3000:3000 \
  -e DB_TYPE=sqlite \
  -e DEMO=true \
  ghcr.io/ever-co/gauzy-api-demo:latest
```


### Run Web App {#run-web-app}


```bash
docker run -d \
  --name gauzy-webapp \
  -p 4200:4200 \
  -e API_BASE_URL=http://localhost:3000 \
  ghcr.io/ever-co/gauzy-webapp:latest
```


## Building Custom Images {#building-custom-images}



### API Dockerfile {#api-dockerfile}


```bash
# Build from source
docker build -t gauzy-api -f .deploy/api/Dockerfile .
```


### Webapp Dockerfile {#webapp-dockerfile}


```bash
docker build -t gauzy-webapp -f .deploy/webapp/Dockerfile .
```


## Multi-Stage Build {#multi-stage-build}


The Dockerfiles use multi-stage builds:

```
Stage 1: Dependencies    → Install node_modules
Stage 2: Build           → Compile TypeScript, bundle Angular
Stage 3: Production      → Minimal runtime image
```

Benefits:

- Smaller final image size
- No dev dependencies in production
- Faster deployments


## Health Checks {#health-checks}


Docker images include health check endpoints:

```dockerfile
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
  CMD curl -f http://localhost:3000/api/health || exit 1
```


## Volumes {#volumes}


| Volume      | Path                                | Purpose                    |
| ----------- | ----------------------------------- | -------------------------- |
| **Uploads** | `/app/dist/apps/api/assets/uploads` | File uploads               |
| **SQLite**  | `/app/data`                         | SQLite database (dev only) |

```bash
docker run -d \
  -v gauzy-uploads:/app/dist/apps/api/assets/uploads \
  ghcr.io/ever-co/gauzy-api:latest
```


## Environment Variables {#environment-variables}


Pass configuration via `-e` flags or `--env-file`:

```bash
docker run -d \
  --env-file .env.production \
  -p 3000:3000 \
  ghcr.io/ever-co/gauzy-api:latest
```


## Related Pages {#related-pages}


- [Docker Compose](https://sourcey-gauzy.pages.dev/deployment/docker/docker-compose/index.md) — multi-container orchestration
- [Deployment Overview](https://sourcey-gauzy.pages.dev/deployment/deployment-overview/index.md) — general deployment info
