109 lines
2.9 KiB
Markdown
109 lines
2.9 KiB
Markdown
# whoami
|
|
|
|
[](https://hub.docker.com/r/traefik/whoami/)
|
|
[](https://github.com/traefik/whoami/actions)
|
|
|
|
Tiny Go webserver that prints OS information and HTTP request to output
|
|
|
|
## Usage
|
|
|
|
### Paths
|
|
|
|
#### `/[?wait=d]`
|
|
|
|
Returns the whoami information (request and network information).
|
|
|
|
The optional `wait` query parameter can be provided to tell the server to wait before sending the response.
|
|
The duration is expected in Go's [`time.Duration`](https://golang.org/pkg/time/#ParseDuration) format (e.g. `/?wait=100ms` to wait 100 milliseconds).
|
|
|
|
#### `/api`
|
|
|
|
Returns the whoami information as JSON.
|
|
|
|
#### `/bench`
|
|
|
|
Always return the same response (`1`).
|
|
|
|
#### `/data?size=n[&unit=u]`
|
|
|
|
Creates a response with a size `n`.
|
|
|
|
The unit of measure, if specified, accepts the following values: `KB`, `MB`, `GB`, `TB` (optional, default: bytes).
|
|
|
|
#### `/echo`
|
|
|
|
WebSocket echo.
|
|
|
|
#### `/health`
|
|
|
|
Heath check.
|
|
|
|
- `GET`, `HEAD`, ...: returns a response with the status code defined by the `POST`
|
|
- `POST`: changes the status code of the `GET` (`HEAD`, ...) response.
|
|
|
|
### Flags
|
|
|
|
| Flag | Env var | Description |
|
|
|----------|----------------------|-----------------------------------------|
|
|
| `cert` | | give me a certificate. |
|
|
| `key` | | give me a key. |
|
|
| `cacert` | | give me a CA chain, enforces mutual TLS |
|
|
| `port` | `WHOAMI_PORT_NUMBER` | give me a port number. (default: `80`) |
|
|
| `name` | `WHOAMI_NAME` | give me a name. |
|
|
|
|
## Examples
|
|
|
|
```console
|
|
$ docker run -d -P --name iamfoo traefik/whoami
|
|
|
|
$ docker inspect --format '{{ .NetworkSettings.Ports }}' iamfoo
|
|
map[80/tcp:[{0.0.0.0 32769}]]
|
|
|
|
$ curl "http://0.0.0.0:32769"
|
|
Hostname : 6e0030e67d6a
|
|
IP : 127.0.0.1
|
|
IP : ::1
|
|
IP : 172.17.0.27
|
|
IP : fe80::42:acff:fe11:1b
|
|
GET / HTTP/1.1
|
|
Host: 0.0.0.0:32769
|
|
User-Agent: curl/7.35.0
|
|
Accept: */*
|
|
```
|
|
|
|
```console
|
|
# updates health check status
|
|
$ curl -X POST -d '500' http://localhost:80/health
|
|
|
|
# calls the health check
|
|
$ curl -v http://localhost:80/health
|
|
* Trying ::1:80...
|
|
* TCP_NODELAY set
|
|
* Connected to localhost (::1) port 80 (#0)
|
|
> GET /health HTTP/1.1
|
|
> Host: localhost:80
|
|
> User-Agent: curl/7.65.3
|
|
> Accept: */*
|
|
>
|
|
* Mark bundle as not supporting multiuse
|
|
< HTTP/1.1 500 Internal Server Error
|
|
< Date: Mon, 16 Sep 2019 22:52:40 GMT
|
|
< Content-Length: 0
|
|
```
|
|
|
|
```console
|
|
docker run -d -P -v ./certs:/certs --name iamfoo traefik/whoami --cert /certs/example.cert --key /certs/example.key
|
|
```
|
|
|
|
```yml
|
|
version: '3.9'
|
|
|
|
services:
|
|
whoami:
|
|
image: traefik/whoami
|
|
command:
|
|
# It tells whoami to start listening on 2001 instead of 80
|
|
- --port 2001
|
|
- --name iamfoo
|
|
```
|