avatar

用 dokku 來架設 Ghost

變成前言的後記

其實這篇的內容是一開始動筆時的紀錄,最近整理發現這篇弄完之後就忘在這邊了,後來也在公司小推了 dokku 一把,順便做了個簡單的分享 ;)
不能不推一下 hackmd,連簡報模式都支援
完全沒聽過 dokku 的可以先參閱一下

如果要用一句直白的話形容 dokku,就是開源窮人版的 heroku

使用方式基本上跟 heroku 很類似,但是要特別提一下他的 plugin 功能,dokku 能夠透過偵測各語言特有的檔案或設定來辨識,不過一般開發者還需要一些「其他」的功能,如資料庫、MQ、Cache 等之類的其他系統,這些都有其他的軟體可以提供,在 dokku 就是透過他的 plugin 就可以把這些系統安裝起來。

所以如果想用 dokku 來架設 Ghost blogging system 也是簡單幾個步驟就可以弄起來了。不過要架設 Ghost 你就可能需要 mysql,更進一步還能透過 Let's Encrypt 把 HTTPS 也架設起來。透過 dokku plugin:install 就可以簡單安裝囉。

ps: 如果你安裝 Ghost/Mysql 可能會遇到文字編碼的問題,可以參考一下這些:

Node.js app on dokku

Node.js 要在 dokku 上面跑起來也不是什麼難事,記得放上 package.json 和設定好 scripts: { start: "..." },dokku 就會幫你設定好

如果需要 private npm modules!?
基本就照這篇做就可以 - Deploying with npm private modules,記得用 dokku config:set NPM_TOKEN=... 設定上你的 auth token,然後把 .npmrc 加到你的 Node.js App repo 裡面

// .npmrc
// registry.npmjs.org/:_authToken=${NPM_TOKEN}

other languages?

如果你不寫 Node.js 而是使用其他的語言,基本上只要 heroku 有支援的應該都可以直接跑起來,大不了就是直接寫 Dockerfile 當成部署的方式而已 ;)

我自己本身是還有玩過 Golang app,如果你有放「處理 dependency」的套件設定(e.g., govendor, Godep or Glide),dokku 就能夠分辨出來。但是我還是建議如果是 Golang app 最好還是用 Dockerfile 的方式來部署。一來是安裝時間相差懸殊,另一則是 Golang 混亂的 dependency 處理問題。

等!! 可能會有人說有 Godep,不是已經是正式成為處理依賴問題的工具,這可以參考大大的解說 - Go 語言官方推出的 dep 使用心得。若你太躁進,跑去用 golang/dep 的版本,dokku 就會無法辨識,他只看得懂 tools/godep

看到這種現象我想想還是等等好了 XD

powered by WebMention.io

You can skeet this post or discuss it on BlueSky, the comments will show up here.
0Likes0Replies0Mentions

Be the first one to share this article!