# Local Docker Setup

## Overview

For easy installation and deployment, we recommend to use Antidote's Docker images.

AntidoteDB has several Docker images hosted in [Docker Hub](https://cloud.docker.com/u/antidotedb/repository/docker/antidotedb/antidote). You can also find its sources and Dockerfiles in the [dedicated github repository](https://github.com/AntidoteDB/docker-antidote).

The hub repository provides images for Antidote releases (currently 0.2.1 / 0.1.1).

## Requirements <a href="#requirements" id="requirements"></a>

Working recent version of Docker (1.12 and up recommended, see the [Docker installation Guide](https://docs.docker.com/engine/installation/)).

## Supported tags and respective `Dockerfile` links

The AntidoteDB images come in many flavors, each designed for a specific use case.

* `antidotedb:latest`: the most recent AntidoteDB version (unstable).
* `antidotedb:stable`: the most recent stable official release (recommended).
* `antidotedb:alpine`: the most recent lightweight alpine release (stable).
* `antidotedb:<release>`: Docker image for a specific  version of AntidoteDB
* `antidotedb:<release>-alpine`: This variant, available for each official release, is recommended when final image size being as small as possible is desired. The main caveat to note is that it use [musl libc](http://www.musl-libc.org/) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libs requirements. However, most software does not have an issue with this, so this variant is usually a very safe choice. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.

Supported tags and respective `Dockefile` github links:

* [`latest`](https://github.com/AntidoteDB/docker-antidote/blob/master/latest/Dockerfile): the most recent AntidoteDB version (Unstable).
* [`0.2.1`, `stable`](https://github.com/AntidoteDB/docker-antidote/blob/master/v0.2.0/Dockerfile): the most recent stable release (recommended).
* [`0.2.0`](https://github.com/AntidoteDB/docker-antidote/blob/master/v0.2.0/Dockerfile)
* [`0.2.0-alpine`, `alpine`](https://github.com/AntidoteDB/docker-antidote/blob/master/v0.2.0-alpine/Dockerfile): the most recent lightweight alpine release.
* [`0.1.1`](https://github.com/AntidoteDB/docker-antidote/blob/master/v0.1.1/Dockerfile)
* [`0.1.1-alpine`](https://github.com/AntidoteDB/docker-antidote/blob/master/v0.1.1-alpine/Dockerfile)
* [`0.1.0`](https://github.com/AntidoteDB/docker-antidote/blob/master/v0.1.0/Dockerfile)

### Starting a local node

Start a local node with the command

```
docker run -d --name antidote1 -p "8087:8087" -e "NODE_NAME=antidote@antidote1" antidotedb/antidote:stable
```

This should fetch the Antidote image automatically. For updating to the latest version use the command `docker pull antidotedb/antidote:stable`.

### Building the image locally

For building the Docker image on your local machine

1\) Clone the [AntidoteDB repository](https://github.com/AntidoteDB/antidote) 2) Checkout the version you want to clone 3) Run `make docker-build`

Then you can run it using:

```
docker run -d --name antidote1 -p "8087:8087" -e "NODE_NAME=antidote@antidote1" antidotedb:local-build
```

To remove the local Docker image, you can use:

```
make docker-clean
```

### Using the local node

Wait until Antidote is ready. The current log can be inspected with `docker logs antidote1`. Wait until the log message `Application antidote started on node 'antidote@127.0.0.1'` appears.

Antidote should now be running on port 8087 on localhost.

### Connect to the console

You can connect to the console of a local node typing the following:

```
docker exec -it antidote1 /antidote/bin/antidote remote_console
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://antidotedb.gitbook.io/documentation/deployment/docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
