はじめに
LBやProxyによるリクエストの振り分けを確認するために、単純にリクエスト内容を表示するだけのコンテナが欲しくなったため作成しました。
githubへ公開しておりますので、ご自由にお使いください。
サンプルの利用方法
Dockerがインストール & 初期セッティング済みであることが前提です。
githubからコードを取得し、docker-composeで起動します。
1 2 |
git clone https://github.com/sun-bs/display-request-contents.git docker-compose up |
サンプルでは2つのコンテナを起動し、それぞれポート50080と60080が割り当てられる設定です。
例えば以下のリクエストで各コンテナへアクセスできます。
1 |
http://localhost:50080/test-path?test-query-key=test-query-value |
1 |
http://localhost:60080/test-path?test-query-key=test-query-value |
Flask(python)のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
from flask import Flask, request import os import urllib.parse app = Flask(__name__) HTTP_METHODS = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'] @app.route('/', defaults={'u_path': ''}, methods=HTTP_METHODS) @app.route('/<path:u_path>', methods=HTTP_METHODS) def index(u_path): env_name = os.getenv('ENV', 'default env name') return f'<h1>{env_name}</h1>' \ f'<p>' \ f'method: {request.method}<br>' \ f'scheme: {request.scheme}<br>' \ f'server: {request.server}<br>' \ f'path: {request.path}<br>' \ f'query: {urllib.parse.unquote(request.query_string.decode())}<br>' \ f'body: {urllib.parse.unquote(request.get_data().decode())}<br>' \ f'headers: {request.headers}<br>' \ f'remote_addr: {request.remote_addr}' \ f'</p>' if __name__ == '__main__': app.run(host='0.0.0.0', port=80, debug=True) |