# VDA in Docker

Docker Installation Guide for different OS(s)

{% embed url="<https://docs.docker.com/engine/install/>" %}

### Windows

Install Docker Desktop&#x20;

{% embed url="<https://docs.docker.com/desktop/install/windows-install/>" %}

{% embed url="<https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?_gl=1*iak05f*_ga*NDE1Mzk2OTkyLjE3MTc2Njc0OTk.*_ga_XJWPQMJYHQ*MTcxNzY2NzQ5OS4xLjEuMTcxNzY2NzYzMi41OS4wLjA>." %}
Link to Download
{% endembed %}

Run following command on Power shell

`wsl --set-default ubuntu`&#x20;

To check docker information run following command on Power shell

docker info&#x20;

### Ubuntu

Set up Docker's `apt` repository.

**Add Docker's official GPG key**:

`sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc`

**Add the repository to Apt sources:**

`echo`\
`"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu`\
`$(. /etc/os-release && echo "$VERSION_CODENAME") stable" |`\
`sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update`

**To install the latest version, run**:

`sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin`

Verify that the Docker Engine installation is successful by running the `hello-world` image.

`sudo docker run hello-world`

Post Installation steps to run docker without root user

Create the `docker` group.

`sudo groupadd docker`

Add your user to the `docker` group.

`sudo usermod -aG docker $USER`

Log out and log back in so that your group membership is re-evaluated.

`newgrp docker`

Verify that you can run `docker` commands without `sudo`.

docker run hello-world

### Install git on OS

{% embed url="<https://git-scm.com/download/win>" %}

### System Requirements

Minimum requirements allocated to Docker should be&#x20;

| RAM   | CPU | Disk  |
| ----- | --- | ----- |
| 12 GB | 4   | 20 GB |

To change the memory allocation for Docker, please visit `Preferences -> Resources -> Advanced` in your Docker Desktop.

### Procedure

#### Clone VDA Installer Git Repository

```
git clone https://github.com/microui-team/vdainstaller.git
```

#### Setting Environment Variables&#x20;

Change the values for parameters as per your keys .&#x20;

```
// Some code
# Registry from which we are pulling the image
IMAGE_REGISTRY=microuidigital
GIT_SHA=latest

# Database configurations
POSTGRES_PASSWORD=postgrespwd  # Change the database password if desired.
DATABASE_URL=postgresql://postgres:postgrespwd@postgres:5432/postgres?schema=public

# Keycloak
KEYCLOAK_URL=http://localhost:8080
KEYCLOAK_ADMIN_USERNAME=whiteklay
KEYCLOAK_ADMIN_PASSWORD=password

# Superset engine specific environment variables - update based on your configuration
ORIG_SUPERSET_URL=http://localhost:8088
SUPERSET_USER=admin
SUPERSET_PASSWORD=admin
ORIG_SUPERSET_TOKEN=123456abc

# AWS credentials
AWS_S3_BUCKET_NAME={your-s3-bucket-name}
AWS_ACCESS_KEY_ID={your-aws-access-key-id}
AWS_SECRET_ACCESS_KEY={your-aws-secret-access-key}

# Realm name
REALM_NAME=ssm-tool

# Environment variables for ingestion
DATA_INGESTION_URL=http://{server-ip}:8083
GIT_TOKEN={your-git-token}
GIT_REPONAME=vda-notebook

# Message queue configurations
MESSAGE_RESPONSE_QUEUE_NAME=amundsen_response_queue
MESSAGE_QUEUE_NAME=amundsen_queue
MESSAGE_QUEUE_PORT=5672
MESSAGE_QUEUE_USER=whiteklay
MESSAGE_QUEUE_PASSWORD=password
MESSAGE_QUEUE_HOST=rabbitmq

# API keys
OPENAI_API_KEY={your-openai-api-key}
HUGGINGFACEHUB_API_TOKEN={your-huggingface-api-token}

```

#### Start Docker Services

&#x20;

```
cd vdainstaller
sh docker-compose-up.sh
```

The docker compose up script calls the script which can also be used directly&#x20;

`docker compose -f vda-deploy.yaml --env-file vda/.env-vda up -d`

#### Stopping the Services

```
cd vdainstaller
sh docker-compose-down.sh
```

The docker compose up script calls the script which can also be used directly&#x20;

`docker compose -f vda-deploy.yaml --env-file vda/.env-vda down`

#### Cleaning up the environment

####

```
cd vdainstaller
sh docker-volume-prune.sh
```

The docker compose up script calls the script which can also be used directly&#x20;

`docker compose -f vda-deploy.yml --env-file vda/.env-vda down`&#x20;

`docker volume prune -a`
