發表文章

目前顯示的是有「docker」標籤的文章

寫 Web 也可以用 Makefile:好好管理你的環境流程

圖片
說到跟別人一起程式專案的協作,我們要解決三個部分的共享:程式碼、環境、流程。程式碼我們大多使用 Git 來整合來自多方的程式碼貢獻,我們也已經盡可能地用 Docker 來解決執行環境的問題。那流程呢?我們常用的一些腳本跟流程該如何協作共享?這時候,Make 就派上用場了。 The GNU logo 你需要具備的內容 什麼是 Make/Makefile 為什麼要用 Make Hello World Makefile 的主要本體:Target Prerequisite 與 Phony Target 來點變數 做一些條件判斷 控制字串的輸出 組合技:管理不同環境的流程 克外補充:進階用法分享 註解的使用 取得當前 Target 名 Make 變數與 Shell Script 變數混用 變數內容可以為 Shell 執行結果 變數可以擴充 想要抽成 function? 剛提到了 info、shell 和 call,還有沒有其他神奇 Function 如果想要中間才執行 Prerequisite? 更多 Prerequisite 用法 進階變數使用 結語 你需要具備的內容 閱讀本篇文章,你可能需要具備以下內容,並依據實際所需調整範例: 包含有 Make 的環境(macOS 和多數 Linux 發行版皆有內建) 能使用 Docker 與 Docker Compose 基本指令 能使用 Shell 基本語法與指令 瞭解 .env 檔(dotEnv)的使用情境 能區分 Tab 字元與空白字元的差別 什麼是 Make/Makefile 如果你曾接觸過 Linux 軟體開發,應該對 Make 不陌生。Make 是一個 Cli 工具,透過 Makefile 檔案設計一系列的流程,讓我們執行單一指令就能自動化完成一連串的目的。Make 很常使用在 C/C++ 等編譯語言的軟體,方便其他使用者直接執行開發者設計好的編譯、測試、封裝等流程。 另外,雖然他叫做 Make,但由於 make 本身也是英文動詞,如果要描述或找資料的話,通常也會習慣稱呼其為 Makefile,或是 GNU Make。 為什麼要用 Make 也許你有疑問,那我們直接寫 Shell Script 是不是也可以達到類似目的呢?...

[筆記] 因為 Debian Jessie 停止支援造成 Dockerfile 執行 apt update 出錯

圖片
這幾天使用舊版 Laradock 的時候,在 build 到 laradock/php-fpm 相關的 Dockerfile 後發生問題了。 隨便放一個圖當社群網站的預覽圖 錯誤訊息 當 Dockerfile 嘗試執行 apt update(或 apt-get update)時出現以下錯誤 W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages 404 Not Found   E: Some index files failed to download. They have been ignored, or old ones used instead. 原因:Jessie PPA 已封存 Debian 8(代號 Jessie)已經停止維護,官方套件庫(PPA) jessie 已經移至 archive.debian.org 封存,並且廢止 jessie-updates 套件庫(合併至 jessie )。 jessie 會自動從 deb.debian.org 轉址到 archive.debian.org 。但是由於 jessie-updates 已經廢除,產生 404 錯誤,連帶影響到 Docker 建置失敗。 以下是相關的資訊: Removal of Wheezy and Jessie (except LTS) from mirrors as Wheezy and Jessie have been integrated into the archive.debian.org structure recently, we are now removing all of Wheezy and all non-LTS architectures of Jessie from the mirror network starting today. 解決方案 將已廢止的 jessie-updates 從 sources.list 中移除: RUN sed - i '/jessie-updates/d' /etc/apt/sources.list # Now a...