在 Go 語言用一行程式碼自動化安裝且更新 Let’s Encrypt 憑證

Go-brown-side.sh 在去年寫了一篇『申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2』教學,如果您是用 Nginx,就可以參考該篇教學讓您的伺服器支援 HTTPS,而 Google Security Blog 也宣布在 56 版本以後將會提示 non-secure 網站,讓使用者可以選擇性瀏覽網站。Let’s Encrypt 官方也公布去年 2016 發了多少張憑證,相當驚人,想必大家對 HTTPS 已經有相當程度的瞭解。底下這張圖說明 2016 年 Let’s Encrypt 發憑證總量的狀況 Screen Shot 2017-04-07 at 9.52.40 AM 此篇會介紹在 Go 語言如何跟 Let’s Encrypt 串接,底下有兩種方式。 Continue reading “在 Go 語言用一行程式碼自動化安裝且更新 Let’s Encrypt 憑證”

用 Golang 寫 Command line 工具

Go-brown-side.sh 如果你要寫 Command line 工具,又想在各平台 (像是 MacOS, Windows 或 Linux) 上執行,這時候 Golang 就是您最好的選擇。在 Reddit 讀到一篇 Command line 工具比較介紹,這篇最主要講到兩個 CLI 工具,一個是 urfave/cli,另一個是 spf13/cobra,這兩個工具其實都非常好用,後者是去年加入 Google Golang 團隊spf13 所開發,該作者加入 Google 後呢,非常的忙,但是強者他同事有幫忙繼續維護 cobra 專案,兩個 CLI 工具各自都有有大型專案使用 urfave/cli 有 docker/libcompose, docker/machine, Drone, Gitea, Gogs 等,而後者 spf13/cobra 則有 docker, docker/distribution, etcd 等。本篇筆者會介紹 urfave/cli 該如何使用? Continue reading “用 Golang 寫 Command line 工具”

Caddy 搭配 Drone 伺服器設定

The_Caddy_web_server_logo.svg

緣由

Caddy 是一套 HTTP/2 伺服器,你可以想成跟 Nginx 是同一種角色,但是 Caddy 有一點不一樣的地方就是自動支援 HTTPS 設定,也就是 Caddy 幫網站自動申請 Letsencrypt 憑證,開發者不需要擔心憑證會過期,Caddy 會定期幫忙更換。Drone 則是一套以 Docker 為基礎的 Continuous Integration 平台。就在上個月 Caddy 發佈了 0.9.5 版本,更新過後,發現 Drone 的 WebSocket 連線會斷線又連線,底下來看看 Caddy 更動了什麼造成 WebSocket 連線失效。 Continue reading “Caddy 搭配 Drone 伺服器設定”

用 Docker 發送 Line 訊息

docker 今年各家網路公司 (Facebook, LineTelegram…) 分別推出 Bot 服務,看起來 Bot 會是未來趨勢,對 Bot 不是很了解的話,可以參考 Eric ShangKuan 寫了一篇: 關於寫對談機器人 (bot) 的兩三事。本篇會介紹如何透過 Docker 整合 Line Message API,下面所有指令都會跟 Docker 有關,但是程式碼都是用 Golang 撰寫,想說順便在台灣推廣 ^__^。就在今年四月 Line 推出第一版 SDK,但是到了九月,突然收到 Line 的通知,說舊版的不支援了,請大家換到新板 API,最近更動到新版本時,踩到官網 UI 的雷就是原來 Line 有分 Developer 跟一般帳號,這兩種差別就是在於有無主動 Push Message 功能,後來在 Line-Go-SDK 發問才找到解答。底下會一步一步教大家如何透過 Docker 發送 Line 訊息。 Continue reading “用 Docker 發送 Line 訊息”

在 Travis 實現 Docker Cache

docker 前一篇寫了『用 Travis 自動上傳 Docker Image』,Travis 跑完測試成功後才自動編譯 Docker Image 並且上傳到 Docker Hub。在每次 commit 後,Travis 執行 docker build 時間總是非常長,當然原因很多。如果選用的 Docker base image 非常肥,指令非常多,每次編譯都要重新下載及執行指令,所以執行時間就是這麼長。本篇就是想辦法減少 Travis 編譯 Image 時間,就像把 node_modules 壓縮起來,下次執行測試前先解壓縮再安裝,可以大幅減少 npm install 時間(可以參考之前的『用一行指令加速 npm install』)。這邊我們就需要用到 Travis 的 Cache 功能Continue reading “在 Travis 實現 Docker Cache”

用 Travis 自動上傳 Docker Image 到 Docker Registry

docker 在今年七月寫了一篇『在 Travis 升級 Docker 和 docker-compose 版本』,就在上個月底 Travis 終於將 Docker 預設版本換成 1.12.x 版本,並且將 docker-compose 也一併升級到 1.8.0,這樣就可以不用手動升級了。那這篇會紀錄如何用 Travis 自動編譯 Docker Image 並且上傳到 Docker Hub。Docker Hub 提供兩種方式讓開發者上傳 Image,第一種是透過 Command line 下指令手動上傳,另外一種則是在 Docker Hub 後台指定 Dockerfile 路徑及需要執行編譯的分支,這樣只要 Push commit 到 Github,Docker Hub 就會根據 Dockerfile 來自動編譯 Docker Image。本篇會介紹如何透過 Travis 服務來自動上傳 Dokcer Image,像是 Golang 的部屬方式通常是編譯出 Binary 執行檔後,將此執行檔加入 Image 最後才上傳。 Continue reading “用 Travis 自動上傳 Docker Image 到 Docker Registry”

2016 COSCUP 用 Golang 寫 Microservices

Go-brown-side.sh 今年在 COSCUP 投稿『用 Golang 寫 Microservice』,這場議程最主要是介紹 Golang 入門篇,以及用了哪些 Golang Library 在 Microservices 上,目的希望能多推廣 Golang 語言在 Server 開發上,將來能更多公司導入使用。底下是今年的簡報及大綱: Continue reading “2016 COSCUP 用 Golang 寫 Microservices”

在 Travis 升級 Docker 和 docker-compose 版本

docker Travis 是在 Github 上常用的整合測試服務,支援了各種程式語言 Golang, PHP, Node.js ..等測試及部署,也同時支援了一些常用 Service,像是 Docker, Redis 或 Database。這次來聊聊在 Travis 如何使用 Docker,在 Travis 內建的 Docker 跟 docker-compose 版本都是非常舊,所以使用預設的 docker-compose 指令常常會出現 (詳細 build log 可以參考這裡) Continue reading “在 Travis 升級 Docker 和 docker-compose 版本”