go dcgi
1.0.0
DCGI는 Docker와 동적으로 웹 페이지를 제공하는 기술입니다. 아시다시피, 월드 와이드 웹 서버는 디스크에서 정적 파일 만 제공 할 수 있습니다. DCGI 서버를 사용하면 실시간으로 코드를 실행할 수 있으므로 웹 페이지에 동적 정보가 포함될 수 있습니다.
DGCI 서버가 수신하는 각 HTTP 요청에 대해 Docker 컨테이너가 HTTP 요청을 제공하기 위해 회전합니다. Docker 컨테이너 내부에는 요청을 처리하는 CGI 실행 파일이 있습니다. 그 실행 파일은 무엇이든 할 수 있으며 모든 언어 나 프레임 워크로 작성 될 수 있습니다.
우와! 더 이상 정적 콘텐츠를 제공하는 웹 사이트를 구축 할 필요가 없습니다. 예를 들어, 전 세계 사람들이 쿼리 할 수 있도록 UNIX 데이터베이스를 월드 와이드 웹에 "연결"할 수 있습니다. 또는 사람들이 데이터베이스 엔진에 정보를 전송할 수 있도록 HTML 양식을 만들 수 있습니다. 가능성은 무한합니다.
그렇다면이 도서관은 무엇입니까? Go-DCGI는 DGCI 서버를 작성하는 라이브러리입니다. 여기에는 Docker 컨테이너를 실행하여 HTTP 요청을 제공하는 GO HTTP 처리기 dcgi.Handler 포함됩니다.
정말 간단한 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 )
}