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 -![dodo_example](https://raw.githubusercontent.com/aykhans/dodo/main/assets/dodo-example.gif) - +![dodo_example](https://raw.githubusercontent.com/aykhans/dodo/main/assets/dodo-example.gif) \ No newline at end of file