go dcgi
1.0.0
DCGIは、Dockerで動的にWebページを提供するための手法です。ご存知かもしれませんが、World Wide Webサーバーはディスクから静的ファイルのみを提供できます。 DCGIサーバーを使用すると、コードをリアルタイムで実行できるため、Webページに動的な情報を含めることができます。
DGCIサーバーが受信するHTTPリクエストごとに、HTTPリクエストを提供するためにDockerコンテナが紡がれます。 Dockerコンテナ内には、リクエストを処理するCGI実行可能ファイルがあります。その実行可能ファイルは何でもできます - そして、あらゆる言語やフレームワークで書くことができます。
おお!静的なコンテンツを提供するWebサイトを構築する必要はもうありません。たとえば、世界中の人々がそれを照会できるように、UNIXデータベースをWorld Wide Webに「接続」することができます。または、HTMLフォームを作成して、人々がデータベースエンジンに情報を送信できるようにすることができます。可能性は無限です。
それで、このライブラリは何のためですか? Go-DCGIは、DGCIサーバーを作成するライブラリです。 Go HTTPハンドラー、 dcgi.Handlerが含まれています。DCGI.Handlerには、Dockerコンテナを実行してHTTPリクエストを提供します。
本当にシンプルなCGIスクリプト、 script.pl :
print " Content-Type: text/html nn " ;
print " <h1>Hello World!</h1> n " ;そして、それを容器の中に置くためのDockerfile :
FROM perl
ADD script.pl /code/script.pl
ENTRYPOINT ["perl", "/code/script.pl"]
これを容器に組み込みます:
$ docker build -t bfirsh/example-dcgi-app .このコンテナは、go-dcgiでHTTPを介して提供できます。
package main
import (
"net/http"
dcgi "github.com/bfirsh/go-dcgi"
"github.com/docker/engine-api/client"
)
func main () {
cli , err := client . NewClient ( "unix:///var/run/docker.sock" , "v1.23" , nil , nil )
if err != nil {
panic ( err )
}
http . Handle ( "/" , & dcgi. Handler {
Image : "bfirsh/example-dcgi-app" ,
Client : cli ,
})
http . ListenAndServe ( ":80" , nil )
}