Amo Chen

用 YAML anchors & aliases 寫出更好維護的 docker compose file

使用 Docker compose 架設開發環境真的十分方便,但是隨著容器數量增多,很容易遇到多個容器都有共通設定的問題,例如多個容器都使用同一套環境變數,每新增 1 個容器,又要再重新複製貼上⋯⋯,如下列範例:

services:
  web:
    image: "nginx"
    environment:
      - DEBUG=true
      - API_VERSION=v1
  redis:
    image: "redis:alpine"
    environment:
      - DEBUG=ture
      - API_VERSION=v1

不過 YAML 的規格其實有針對這個問題提出解決辦法,該功能稱為 YAML anchors & aliases 這個功能可以讓我們把共通/共用的設定變成 1 個可引用的區塊,然後如果後續需要使用這些共通/共用的設定時,可以用特殊語法直接告訴 Docker compose 去複製/引用該區塊的設定。

真的相當方便,一起來看怎麼使用吧!

Posted on  Dec 16, 2023  in  Docker  by  Amo Chen  ‐ 4 min read

談 docker compose 的 depends_on 設定怎麼使用

在使用 docker compose 架設開發環境時,會遇到所謂的服務相依性問題(service dependencies), 舉個簡單的例子,通常資料庫的容器(container)ㄧ定要先正常啟動,後端 API server 的容器才能接著啟動,因為 API server 可能在啟動時需要與資料庫連線建立 connection pool 之後,才會提供 API 服務,否則就會發生錯誤並退出執行,導致容器啟動失敗。

在這個情況下, API server 容器依賴資料庫容器的正常運作,這就是服務相依性。如果沒有理解服務相依性的問題,那麼在使用 docker compose 的時候,將會很容易遇到時而啟動成功,時而啟動失敗的問題,因為有時相依的服務會剛好準時或提早起動成功,有時則還沒準備好。

為此, docker compose 也有提供解決服務相依性的設定,那就是 depends_on 設定。

本文將教導如何使用 depends_on 設定。

Posted on  Dec 14, 2023  in  Docker  by  Amo Chen  ‐ 5 min read

隱私優先的開源筆記軟體 - Logseq

你有在寫工作日誌嗎? 今年初我做了 1 個嘗試,每天寫下當天做了什麼的工作日誌,想要作為日後回顧使用之外,也用來反省每天做的事有沒有實質推進專案進

Posted on  Dec 11, 2023  by  Amo Chen  ‐ 2 min read

如何做到正向循環的 Code Review ?

其實不少大神都有寫過如何進行 Code review 或類似的文章,不過我還是想藉著自身的經驗總結一遍。 通常會需要你 Code review 就代表你對 Codebase 或者程式設計的功力已經有相當程

Posted on  Dec 8, 2023  by  Amo Chen  ‐ 2 min read