# Installation with Docker

Diun provides automatically updated Docker :whale: images within [Docker Hub](https://hub.docker.com/r/crazymax/diun).
It is possible to always use the latest stable tag or to use another service that handles updating Docker images.

Following platforms for this image are available:

```shell
$ docker run --rm mplatform/mquery crazymax/diun:latest
Image: crazymax/diun:latest
 * Manifest List: Yes
 * Supported platforms:
   - linux/amd64
   - linux/arm/v6
   - linux/arm/v7
   - linux/arm64
   - linux/386
   - linux/ppc64le
   - linux/s390x
```

This reference setup guides users through the setup based on `docker-compose`, but the installation of `docker-compose`
is out of scope of this documentation. To install `docker-compose` itself, follow the official
[install instructions](https://docs.docker.com/compose/install/).

## Volumes

| Path               | Description   |
|--------------------|---------------|
| `/data`            | Contains bbolt database which retains Docker images manifests |

## Usage

```yaml
version: "3.5"

services:
  diun:
    image: crazymax/diun:latest
    container_name: diun
    volumes:
      - "./data:/data"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - "TZ=Europe/Paris"
      - "LOG_LEVEL=info"
      - "LOG_JSON=false"
      - "DIUN_WATCH_WORKERS=20"
      - "DIUN_WATCH_SCHEDULE=*/30 * * * *"
      - "DIUN_PROVIDERS_DOCKER=true"
      - "DIUN_PROVIDERS_DOCKER_WATCHSTOPPED=true"
    labels:
      - "diun.enable=true"
      - "diun.watch_repo=true"
    restart: always
```

Edit this example with your preferences and run the following commands to bring up Diun:

```shell
$ docker-compose up -d
$ docker-compose logs -f
```

Or use the following command:

```shell
$ docker run -d --name diun \
    -e "TZ=Europe/Paris" \
    -e "LOG_LEVEL=info" \
    -e "LOG_JSON=false" \
    -e "DIUN_WATCH_WORKERS=20" \
    -e "DIUN_WATCH_SCHEDULE=*/30 * * * *" \
    -e "DIUN_PROVIDERS_DOCKER=true" \
    -e "DIUN_PROVIDERS_DOCKER_WATCHSTOPPED=true" \
    -v "$(pwd)/data:/data" \
    -v "/var/run/docker.sock:/var/run/docker.sock" \
    -l "diun.enable=true" \
    -l "diun.watch_repo=true" \
    crazymax/diun:latest
```

To upgrade your installation to the latest release:

```shell
$ docker-compose pull
$ docker-compose up -d
```

If you prefer to rely on the configuration file instead of environment variables:

```yaml
version: "3.5"

services:
  diun:
    image: crazymax/diun:latest
    volumes:
      - "./data:/data"
      - "./diun.yml:/diun.yml:ro"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - "TZ=Europe/Paris"
      - "LOG_LEVEL=info"
      - "LOG_JSON=false"
    restart: always
```

```yaml
# ./diun.yml

watch:
  workers: 20
  schedule: "*/30 * * * *"

providers:
  docker:
    watchStopped: true
```
