# Run Tachyon with Docker Compose
URL: /docs/guides/docker-compose

A Compose file for local development and small deployments — Tachyon plus your application, wired together with a persistent volume.



Tachyon ships as a single container by design — there's no official Compose
file, because none is required to run it. This is a Compose file you can
adapt, not a first-party manifest; see
[Deployment → Orchestration](/docs/deployment#orchestration) for why none
ships in the box.

## Tachyon alone [#tachyon-alone]

```yaml
# docker-compose.yml
services:
  tachyon:
    image: adikeshri/tachyon:latest
    ports:
      - "8108:8108"
    volumes:
      - tachyon-data:/data
    environment:
      TACHYON_ADMIN_KEY: ${TACHYON_ADMIN_KEY}
      TACHYON_SEARCH_KEY: ${TACHYON_SEARCH_KEY}
    healthcheck:
      test: ["CMD", "tachyon", "--healthcheck"]
      interval: 10s
      timeout: 3s
      retries: 3

volumes:
  tachyon-data:
```

`--healthcheck` is the flag documented on
[Configuration](/docs/configuration) specifically for this: it checks a
locally running instance and exits, which is exactly what a container
healthcheck needs.

## Alongside your application [#alongside-your-application]

```yaml
# docker-compose.yml
services:
  tachyon:
    image: adikeshri/tachyon:latest
    volumes:
      - tachyon-data:/data
    environment:
      TACHYON_ADMIN_KEY: ${TACHYON_ADMIN_KEY}
      TACHYON_SEARCH_KEY: ${TACHYON_SEARCH_KEY}
    healthcheck:
      test: ["CMD", "tachyon", "--healthcheck"]
      interval: 10s
      timeout: 3s
      retries: 3

  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      TACHYON_URL: http://tachyon:8108
      TACHYON_ADMIN_KEY: ${TACHYON_ADMIN_KEY}
      TACHYON_SEARCH_KEY: ${TACHYON_SEARCH_KEY}
    depends_on:
      tachyon:
        condition: service_healthy

volumes:
  tachyon-data:
```

Note that `tachyon` isn't published to the host here — only `app` is. Other
containers on the same Compose network reach it at `http://tachyon:8108`;
nothing outside the network can.

## Environment file [#environment-file]

```bash
# .env
TACHYON_ADMIN_KEY=change-me-before-anything-shared
TACHYON_SEARCH_KEY=a-different-read-only-key
```

Never commit this file. See
[Configuration → Authentication](/docs/configuration#authentication) for
what each key actually gates.

## Bringing it up [#bringing-it-up]

```bash
docker compose up -d
docker compose logs -f tachyon
```

On first start with no existing volume data, create your collections and
index documents as in the [Quickstart](/docs/quickstart) — Compose doesn't
seed data for you.
