用 golang 撰寫的服務,編譯成執行檔後,你可以有很多的選擇,例如:upstart , supervisord , 或是 daemontools
這一次,我想用 Docker ,想要他的彈性
但是,不管用 Ubuntu , Debian 或是官方的 Golang 的 image
總覺得 image 太大,不合用,直接由 scratch 做 image 又覺得,萬一有一些系統的相依套件,需要的時候,不方便
所以這是我目前的萬用 image 的 Dockerfile
FROM alpine:3.2
RUN apk --update add curl
WORKDIR /usr/src/app
ENTRYPOINT ["/usr/src/app/goapp"]
實際的編譯執行檔,分資料夾放,名字都叫做 goapp,執行 container 的時候,用 -v 掛載進 container 的 /usr/src/app
golang 的程式記得可以用環境變數,更改一些執行的變數,像是,資料庫連結,等等,只要執行 container 時,用 -e 帶給 container
以後上新版的執行檔,就只要下 docker restart your_running_container 而已
image 裡安裝的 curl ,只是要順便把 ssl certificates 安裝,這樣就有 root certificates
這樣的 images 大小大約 8.7 MB ,夠小,也很快
沒有留言:
張貼留言