---
title: "Docker"
description: "Official docker image for bknd"
tags: ["documentation"]
---

# Official `bknd` Docker image

The docker image intentially doesn't copy any data into the image for now, so you can copy the Dockerfile and build the image anywhere.

Locate the Dockerfile either by pulling the [repository](https://github.com/bknd-io/bknd) and navigating to the `docker` directory, or download from [here](https://github.com/bknd-io/bknd/blob/main/docker/Dockerfile).

## Building the Docker image

To build the Docker image, run the following command:

```bash
docker build -t bknd .
```

If you want to override the bknd version used, you can pass a `VERSION` build argument:

```bash
docker build --build-arg VERSION=<version> -t bknd .
```

## Running the Docker container

To run the Docker container, run the following command:

```bash
docker run -p 1337:1337 bknd
```

You can pass the same CLI arguments (see [Using the CLI](https://docs.bknd.io/cli) guide) to the docker container as you'd do with `npx bknd run`, like so:

```bash
docker run -p 1337:1337 -e ARGS="--db-url file:/data/data.db" bknd
```

To mount the data directory to the host, you can use the `-v` flag:

```bash
docker run -p 1337:1337 -v /path/to/data:/data bknd
```

## Docker compose example

If you want to use docker compose and build the image directly from the git repository.

```yaml title="compose.yml"
services:
  bknd:
    pull_policy: build
    build: https://github.com/bknd-io/bknd.git#main:docker
    ports:
      - 1337:1337
    environment:
      ARGS: "--db-url file:/data/data.db"
    volumes:
      - ${DATA_DIR:-.}/data:/data
```

The docker compose file can be extended to build a specific version of bknd.
Extend the `build` section with `args` and `labels`.
Inside `args`, you can pass a `VERSION` build argument, and use `labels` so the built image receives a unique identifier.

```yaml title="compose.yml"
services:
  bknd:
    pull_policy: build
    build:
      context: https://github.com/bknd-io/bknd.git#main:docker
      args:
        VERSION: <version>
      labels:
        - x-bknd-version=<version>
    ports:
      - 1337:1337
    environment:
      ARGS: "--db-url file:/data/data.db"
    volumes:
      - ${DATA_DIR:-.}/data:/data
```
