# Docker

ws4sqlite provides a standard Docker image, based on distroless/static-debian11. It's a multiarch image for amd64, ARM/v7 and ARM64/v8.

Here are the relevant configurations:

|                |                                 |                                         |
| -------------- | ------------------------------- | --------------------------------------- |
| Exposed port   | 12321                           | Fixed; remap it with `-p`               |
| Config dir     | `/data`                         | Fixed; remap it with `-v`               |
| User to run as | `--user <user_id>[:<group_id>]` | Docker standard switch; ***do use it*** |
| Timezone       | `-e TZ=xxx/yyy`                 | Docker standard env var                 |

#### Example

```bash
docker run -d \
 --restart=unless-stopped \
 --name=ws4sqlite \
 -p 8080:12321 \
 -v /mnt/DockerHome/myDir:/data \
 --user 1000:1001 \
 -e TZ=Europe/Rome \
 germanorizzo/ws4sqlite:latest \
 --db /data/testDb.db
```

This command will install and run ws4sqlite, configuring it to:

* Use port 8080 (Line 4);
* Map a local dir to path `/data` in the docker environment (Line 5);
* Starts ws4sqlite as user 1000, group 1001 (Line 6);
* Sets the time zone (Line 7);
* Use free cli arguments, as it was the ws4sqlite binary (Line 9).

The rest of the lines in this example are standard Docker.

#### Important

* It's important to use `--user`, otherwise ws4sqlite will start with root privileges! You don't want this, as it creates files; for example, backups may potentially overwrite some file or wreak havoc in unpredictable ways (which are actually very predictable, but only after they happen).

#### Caveats

* You have to reference database and companion files that are in the directory mapped to `/data` as they were in `/data`;
* The path for the database file should be absolute, i.e. `/data/...`.


---

# 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://germ.gitbook.io/ws4sqlite/documentation/installation/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.
