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 )
}