diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..6026c9c
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,10 @@
+.github
+assets
+binaries
+dodo
+.git
+.gitignore
+README.md
+LICENSE
+config.json
+build.sh
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..4fa4c22
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,20 @@
+FROM golang:1.22.5-alpine AS builder
+
+WORKDIR /dodo
+
+COPY go.mod go.sum ./
+RUN go mod download
+COPY . .
+
+RUN go build -o dodo
+RUN echo "{}" > config.json
+
+FROM gcr.io/distroless/static-debian12:latest
+
+WORKDIR /dodo
+
+COPY --from=builder /dodo/dodo /dodo/dodo
+COPY --from=builder /dodo/config.json /dodo/config.json
+
+ENTRYPOINT ["./dodo", "-c", "/dodo/config.json"]
+CMD []
\ No newline at end of file
diff --git a/README.md b/README.md
index b3dc039..4cc7901 100644
--- a/README.md
+++ b/README.md
@@ -4,10 +4,19 @@
## Installation
+### With Docker (Recommended)
+Pull the Dodo image from Docker Hub:
+```sh
+docker pull aykhans/dodo:latest
+```
+If you use Dodo with Docker and a config file, you must provide the config.json file as a volume to the Docker run command (not as the "-c config.json" argument), as shown in the examples in the [usage](#usage) section.
+
+### With Binary File
You can grab binaries in the [releases](https://github.com/aykhans/dodo/releases) section.
### Build from Source
-To build Dodo from source, you need to have [Go1.22+](https://golang.org/dl/) installed. Follow the steps below:
+To build Dodo from source, you need to have [Go1.22+](https://golang.org/dl/) installed.
+Follow the steps below to build dodo:
1. **Clone the repository:**
@@ -38,6 +47,10 @@ Send 1000 GET requests to https://example.com with 10 parallel dodos (threads) a
```sh
dodo -u https://example.com -m GET -d 10 -r 1000 -t 2000
```
+With Docker:
+```sh
+docker run --rm aykhans/dodo -u https://example.com -m GET -d 10 -r 1000 -t 2000
+```
### 2. JSON config file
You can find an example config structure in the [config.json](https://github.com/aykhans/dodo/blob/main/config.json) file:
@@ -69,6 +82,10 @@ Send 1000 GET requests to https://example.com with 5 parallel dodos (threads) an
```sh
dodo -c /path/config.json
```
+With Docker:
+```sh
+docker run --rm -v ./path/config.json:/dodo/config.json -i aykhans/dodo
+```
### 3. Both (CLI & JSON)
Override the config file arguments with CLI arguments:
@@ -76,6 +93,10 @@ Override the config file arguments with CLI arguments:
```sh
dodo -c /path/config.json -u https://example.com -m GET -d 10 -r 1000 -t 2000
```
+With Docker:
+```sh
+docker run --rm -v ./path/config.json:/dodo/config.json -i aykhans/dodo -u https://example.com -m GET -d 10 -r 1000 -t 2000
+```
## CLI and JSON Config Parameters
| Parameter | JSON config file | CLI Flag | CLI Short Flag | Type | Description | Default |
@@ -93,5 +114,4 @@ dodo -c /path/config.json -u https://example.com -m GET -d 10 -r 1000 -t 2000
| Proxy | proxies | - | - | List[Key-Value {string: string}] | List of proxies (will check active proxies before sending requests) | - |
## Examples
-
-
+
\ No newline at end of file