go dcgi
1.0.0
DCGI是一種用於與Docker動態服務網頁的技術。您可能知道,萬維網服務器只能將靜態文件從磁盤上提供。 DCGI服務器允許您實時執行代碼,因此網頁可以包含動態信息。
對於DGCI服務器收到的每個HTTP請求,啟用Docker容器以服務於HTTP請求。 Docker容器內部是CGI可執行文件,可執行該請求。該可執行文件可以做任何事情 - 可以用任何語言或框架編寫。
哇!我們不再需要構建僅提供靜態內容的網站。例如,您可以將UNIX數據庫“連接”到萬維網,以便世界各地的人們都可以查詢它。或者,您可以創建HTML表單,以允許人們將信息傳輸到您的數據庫引擎中。可能性是無限的。
那麼,這個圖書館是用什麼? GO-DCGI是編寫DGCI服務器的庫。它包括一個GO HTTP處理程序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 )
}