快速開始
本頁說明啟動 go-image-server 所需的環境、兩種安裝方式,以及第一次上傳與讀取圖片。
前置需求
| 項目 | 需求 | 來源 |
|---|---|---|
| Docker Compose 部署 | Docker 與 Docker Compose | docker-compose.yaml |
| 自行編譯 | Go 1.21 以上(容器使用 golang:1.22-alpine) |
app/go.mod |
| 影像處理 | libvips(含 pkg-config);輸出 AVIF 需 libheif/libavif |
docker-compose.yaml 的 apk add |
| 404 佔位圖 | app/internal/assets/image/404-light.svg 與 404-dark.svg |
configs.Get404SVG() |
404 佔位圖不在 repo 內:.gitignore 的 **/image/ 規則會排除 app/internal/assets/image/,部署前需自行放置這兩個檔案,否則讀圖失敗時無法回傳佔位圖。
以 Docker Compose 啟動
git clone https://github.com/pardnio/go-image-server.git
cd go-image-server
docker compose up -d
| 服務 | 映像 | 對外埠 | 說明 |
|---|---|---|---|
nginx |
nginx:stable-alpine |
8080 → 80 |
掛載 ./config/nginx,日誌寫入 ./logs/nginx |
golang |
golang:1.22-alpine |
不對外 | 啟動時安裝 libvips 後執行 go build -o main ./cmd/server && ./main |
圖片資料掛載於專案根目錄的 ./image,對應容器內的 storage/image。
從原始碼編譯
git clone https://github.com/pardnio/go-image-server.git
cd go-image-server/app
go build -o main ./cmd/server
./main
所有儲存路徑皆以 os.Getwd() 為根,必須在 app/ 目錄下執行,否則 storage/image 與佔位圖會落在錯誤位置。服務預設監聽 8080,可用 PORT 覆寫(見 設定)。
第一次上傳與讀取
# 上傳到 storage/image/upload/blog
curl -X POST -F "filepath=@./photo.jpg" http://localhost:8080/upload/blog
# 用回應中的 src 讀取,預設輸出 WebP
curl -o photo.webp "http://localhost:8080/c/img/blog/<filename>"
# 健康檢查
curl http://localhost:8080/check/state