目的
- Canvas OSS を docker-compose で動かしている環境で、TSX 変更を最短で本番バンドルへ反映する手順を共有します。
TL;DR
- コマンド:
docker compose exec web yarn webpack-production
- 必要なら再起動:
docker compose restart web
- 反映確認: ブラウザをハードリロード(キャッシュ無効)
なぜこれで足りるか
- Canvas のフロントは rspack(webpack) が
public/dist
に JS バンドルを生成。 - TSX 変更のみなら JS の再ビルドだけで十分。CSS/i18n/brandable_css を触っていな
い限り、canvas:compile_assets
のフル実行は不要。 -
yarn webpack-production
は最適化済み(本番用)バンドルを生成するため、本番表示でもそのまま反映されます。
前提
- サービス名は
web
(標準の docker-compose)。 -
public/dist
は docker volume で永続化されている(標準設定)。
手順
- 本番バンドル再ビルド:
docker compose exec web yarn webpack-production
- 必要に応じて再起動:
docker compose restart web
- 確認: ブラウザをキャッシュ無効化でリロード
よくある疑問
- フルビルドは必要?: CSS や i18n、brandable_css を更新したときのみ
docker comp ose exec web bin/rails canvas:compile_assets
を実行。 - 開発バンドルで素早く確認したい:
docker compose exec web bundle exec rake canv as:compile_assets_dev
(URL に?optimized_js=0
を付けて確認)。恒常反映は本番
バンドルで。
トラブルシュート
- 反映されない:
- ブラウザキャッシュを無効化して再読込。
-
public/dist
ボリュームが古い場合:docker volume ls | grep public_dist
→
docker volume rm <プロジェクト名>_public_dist
→ 再ビルド。
- メモリ不足や速度が厳しい:
- ソースマップ省略:
docker compose exec web bash -lc 'SKIP_SOURCEMAPS=1 yarn webpack-production'
- ソースマップ省略:
- 依存がズレて失敗:
-
docker compose exec web bash -lc 'yarn install --frozen-lockfile || yarn in stall --frozen-lockfile --network-concurrency 1'
実行後に再ビルド。
-
フルビルドが必要なケース
- CSS 変更、translations/i18n の再生成、brandable_css の再生成が必要な場合。
- その際は:
docker compose exec web bin/rails canvas:compile_assets
この運用なら TSX 修正は「JS だけの再ビルド」で十分です。運用フローに合わせて、必
要なら上記のフルビルドへ切り替えてください。