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

# Docker for PulsejetDB

PulsejetDB provides Docker image that facilitate running PulsejetDB in Docker containers.

<Tip>
  PulsejetDB comes with full production ready optimized container.

  * `jetngine/pulsejet:master` (or `jetngine/pulsejet`)
    It is the lightweight Docker image of PulsejetDB.
</Tip>

## Prerequisites

Before proceeding, ensure you have installed Docker, following the [official Docker documentation](https://docs.docker.com/install).

## Setup

This setup of PulsejetDB uses one of the available Docker images, as listed above.

Follow the steps to set up PulsejetDB in a Docker container.

### Install PulsejetDB

If you want to pull the image first you can use:

```
docker pull jetngine/pulsejet:master
```

We have ARM and x86 builds.

Run this command to create a Docker container with PulsejetDB:

```bash
docker run --name pulsejet_container -p 4000:4000 -p 47044-47045:47044-47045 jetngine/pulsejet
```

Where:

* `docker run` is a native Docker command used to spin up a container.
* `--name pulsejet_container` defines a name for the container.
* `-p 4000:4000` exposes built-in dashboard.
* `-p 47044-47045:47044-47045` published 47044 and 47045 ports HTTP and GRPC ports respectively.
* `jetngine/pulsejet` is a Docker image provided by PulsejetDB. You can choose a different one from the list above.

Once the container is created, you can use the following commands:

* `docker stop pulsejet_container` to stop the container. *Note that this may not always be necessary because when turning off the host machine, the container will also be shut down.*
* `docker start pulsejet_container` to restart a stopped container with all its previous changes (such as any dependencies that were installed) intact. *Note that `docker start` restarts a stopped container, while `docker run` creates a new container.*

<Tip>
  If you don't want to follow the logs and get the prompt back, add the `-d` flag that stands for *detach*.

  ```bash
  docker run --name pulsejet_container -d -p 4000:4000 -p 47044-47045:47044-47045 jetngine/pulsejet
  ```
</Tip>

<Tip>
  If you want to persist your models and configurations in the host machine, run these commands:

  ```bash
  docker run --name pulsejet_container -p 4000:4000 -p 47044-47045:47044-47045 -v $(pwd)/pulselog:/.database jetngine/pulsejet
  ```

  Where `-v $(pwd)/pulselog:/.database` maps the newly created folder `pulselog` on the host machine to the `/.database` inside the container.
</Tip>

### Custom configuration

To override the default configuration, you can mount a config file over `/pulsejet/config-container.toml`, as below.

```bash
docker run -v config-container.toml:/pulsejet/config-container.toml jetngine/pulsejet
```

<Tip>
  **What's next?**

  Now that you installed and started PulsejetDB locally in your Docker container, go ahead and find out how to use the [SYNC client](/devel/remote_client) or [ASYNC client](/devel/remote_async_client) with **remote** setting.

  Check out the [Use Cases](/introduction#use-cases) section to follow tutorials that cover RAG development, Chatbots, Real-time embedding ingestion, Vector Serving and more.
</Tip>
