Go 專案的 Docker Build 加速:分層快取跟 ARG 位置

在 Dockerfile 裡 build golang 程式總是要花個幾分鐘,雖然不多,但是反覆的測試跟修改程式下,往往也花掉了不少時間。 目前使用的 Dockerfile 大概如下,在舊筆電 build 一次大概要 2 分鐘多 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 FROM golang:1.24-alpine AS builder ARG VERSION=v0.0.0 ARG COMMIT=unknown WORKDIR /src ADD . /src RUN CGO_ENABLED=0 go build \ -ldflags "-X github.com/nyorc/go-ver.Version=${VERSION} \ -X github.com/nyorc/go-ver.BuildTime=$(date +%Y/%m/%dT%H:%M:%S) \ -X github.com/nyorc/go-ver.Commit=${COMMIT}" \ -o app FROM alpine:latest COPY --from=builder /src/app /bin/app ENTRYPOINT [ "/bin/app" ] 筆電環境 ...

15 April 2026 · 2 min · nyo

使用 Colima 取代 Docker Desktop

Colima (https://github.com/abiosoft/colima) 是一個目標成為在 MacOS 上最簡單的 container 環境工具,可以視為 Docker Desktop 的替代方案。 基於 Lima 這個 VM 上 本身只有簡單的 CLI,沒有 GUI 支援 Docker 跟 Containerd 還有 Kubernetes 移除 Docker Desktop 如果你原本有安裝 Docker Desktop 可以移除了,看是要把 App 拉進垃圾筒或是 brew uninstall。 ...

20 July 2023 · 2 min · nyo

Docker 的容器重啟政策

docker 本身有提供重啟政策(restart policy)讓你可以控制容器是否要自動重啟。 使用方式 在 docker run 加上 --restart flag 1 $ docker run -d --restart unless-stopped nginx 在 docker-compose.yml,設定 restart: xxx ...

28 July 2022 · 1 min · nyo

清除沒有用的 Docker Image

寫這篇文章時的 docker 版本 1 2 $ docker -v Docker version 19.03.13, build 4484c46d9d 查看、刪除 Image 查看 images $ docker images 刪除 images $ docker rmi <image_id> 正在使用的 image 不能刪除 1 2 $ docker rmi 63130206b0fa Error response from daemon: conflict: unable to delete 63130206b0fa (must be forced) - image is being used by stopped container 730c4cddd1ad 清除沒有用的 Image 清除沒有被 tag 的 image 1 2 3 $ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y 清除沒有被 tag 也沒有被引用的 image 1 $ docker image prune -a 條件過濾,清除 24 小時以前建立的 image 1 $ docker image prune -a --filter "until=24h" Reference https://docs.docker.com/config/pruning https://docs.docker.com/engine/reference/commandline/image_prune

17 November 2020 · 1 min · nyo

在 Amazon Linux 2 上安裝 Docker

最近要在偶然拿到手的 EC2 instance 上安裝 docker,卻意外的無法照著官網的說明安裝! 原來是我拿到的 instance 是裝 Amazon Linux 2 這個 AWS 的特別版 OS 沒辦法直接使用一般的 yum 去安裝 ...

20 November 2019 · 1 min · nyo

用 Vagrant 建立開發環境

身為一個程式設計師,一定會做一件事,就是建立開發環境,而建立開發環境卻是很煩人的過程。 之前為了解決這個問題,自己動手記錄了開發環境會使用的工具跟服務,寫了一個很簡單的 shell script。 ...

30 May 2015 · 2 min · nyo