Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

【Docker】 fallback 機能付きで静的コンテンツを手軽に配信する

goStatic がオススメ

goStaticの特徴はこちらです。

  • 設定ファイル不要
  • Go言語で書かれている
  • 軽量コンテナ

たとえば、以下のコマンド一発で fallback 機能を使いつつ静的コンテンツを配信できます。

docker run -d -p 80:8043 -v $PWD/dist:/srv/http pierrezemb/gostatic -fallback index.html

Dockerfile を書くときも結構シンプルにできます。

# ビルド環境
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# 本番環境
FROM pierrezemb/gostatic as production-stage
COPY --from=build-stage /app/dist /srv/http
CMD ["-fallback", "index.html"]
# port を変えたいのであればこちら
# CMD ["-port", "8080", "-fallback", "index.html"]

僕はViteでプロダクションビルドした結果をgoStaticで配信する形を取りました。

個人的には node イメージで servor をインストールするよりオーバーヘッドが小さく、それでいてnginx イメージを使うよりも楽にできたなという印象です。 goStatic、使ってみてはいかがでしょうか。