Need help with docker-http-https-echo?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

mendhak
170 Stars 66 Forks 90 Commits 3 Opened issues

Description

Docker image that echoes request data as JSON; listens on HTTP/S, useful for debugging.

Services available

!
?

Need anything else?

Contributors list

# 19,232
Angular
TypeScr...
Java
intelli...
55 commits
# 39,057
C
Shell
aws-s3
exporte...
15 commits
# 79,096
HTML
release...
semver
React
4 commits
# 588,347
varnish
HTML
Shell
JavaScr...
1 commit
# 403,004
mesos
hashico...
Go
Shell
1 commit
# 374,916
Go
Shell
JavaScr...
Docker
1 commit
# 106,418
Terrafo...
golang
Amazon ...
testing...
1 commit
# 375,516
Shell
golang
hexagon...
JavaScr...
1 commit
# 385,153
rbac
Lua
egg
Shell
1 commit

pulls Docker Image Version (latest semver) GitHub Workflow Status

mendhak/http-https-echo
is a Docker image that can echo various HTTP request properties back to client, as well as in the Docker container logs. You can use your own certificates, choose your ports, decode JWT headers and filter out certain paths.

browser

This image is executed as non root by default and is fully compliant with Kubernetes or Openshift deployment.

Please do not use the

:latest
tag as it will break without warning, use a specific version instead.

Basic Usage

Run with Docker

docker run -p 8080:8080 -p 8443:8443 --rm -t mendhak/http-https-echo:17

Or run with Docker Compose

docker-compose up

Then, issue a request via your browser or curl, and watch the response, as well as container log output.

curl -k -X PUT -H "Arbitrary:Header" -d aaa=bbb https://localhost:8443/hello-world

Choose your ports

You can choose a different internal port instead of 8080 and 8443 with the

HTTP_PORT
and
HTTPS_PORT
environment variables.

In this example I'm setting http to listen on 8888, and https to listen on 9999.

 docker run -e HTTP_PORT=8888 -e HTTPS_PORT=9999 -p 8080:8888 -p 8443:9999 --rm -t mendhak/http-https-echo:17

With docker compose, this would be:

my-http-listener:
    image: mendhak/http-https-echo:17
    environment:
        - HTTP_PORT=8888
        - HTTPS_PORT=9999
    ports:
        - "8080:8888"
        - "8443:9999"

Use your own certificates

Use volume mounting to substitute the certificate and private key with your own. This example uses the snakeoil cert.

my-http-listener:
    image: mendhak/http-https-echo:17
    ports:
        - "8080:8080"
        - "8443:8443"
    volumes:
        - /etc/ssl/certs/ssl-cert-snakeoil.pem:/app/fullchain.pem
        - /etc/ssl/private/ssl-cert-snakeoil.key:/app/privkey.pem

Decode JWT header

If you specify the header that contains the JWT, the echo output will contain the decoded JWT. Use the

JWT_HEADER
environment variable for this.
docker run -e JWT_HEADER=Authentication -p 8080:8080 -p 8443:8443 --rm -it mendhak/http-https-echo:17

Now make your request with

Authentication: eyJ...
header (it should also work with the
Authentication: Bearer eyJ...
schema too):
 curl -k -H "Authentication: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" http://localhost:8080/

And in the output you should see a

jwt
section.

Do not log specific path

Set the environment variable

LOG_IGNORE_PATH
to a path you would like to exclude from verbose logging to stdout. This can help reduce noise from healthchecks in orchestration/infrastructure like Swarm, Kubernetes, ALBs, etc.
 docker run -e LOG_IGNORE_PATH=/ping -p 8080:8080 -p 8443:8443 --rm -t mendhak/http-https-echo:17

With docker compose, this would be:

my-http-listener:
    image: mendhak/http-https-echo:17
    environment:
        - LOG_IGNORE_PATH=/ping
    ports:
        - "8080:8080"
        - "8443:8443"

JSON payloads and JSON output

If you submit a JSON payload in the body of the request, with Content-Type: application/json, then the response will contain the escaped JSON as well.

For example,

curl -X POST -H "Content-Type: application/json" -d '{"a":"b"}' http://localhost:8080/

Will contain a

json
property in the response/output.
    ...
    "xhr": false,
    "connection": {},
    "json": {
        "a": "b"
    }
}

Custom status code

Use

x-set-response-status-code
to set a custom status code. For example,
curl -v -H "x-set-response-status-code: 401" http://localhost:8080/

Will cause the reponse status code to be:

 HTTP/1.1 401 Unauthorized

Output

Curl output

curl

docker logs
output

dockerlogs

Building

docker build -t mendhak/http-https-echo .

Run some tests to make sure features are working as expected.

./tests.sh

To create a new image on Docker Hub, I need to create a tag and push it.

git tag -s 16
git push --tags

Changelog

See the changelog

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.