Releases: kurozumi/eccube-docker
Release list
v1.0.11
本番には、レビュー済みの main しか出ないようにした版。エンジニアが直し、担当者が承認して本番へ出す運用で、「エンジニアが勝手に出す」と「担当者がうっかり出す」を別々の壁で止めます。
この版で変わったこと
bin/deploy.shに壁を 2 枚組み込んだ。(#166)何もしなくて効きます。- 手元: 向こうが本番構成(
compose.prod.yamlで稼働中)なら、いまのブランチがmain(.envのDEPLOY_BRANCHで変更可)で、コミットしていない変更が無く、origin/mainの先頭と完全に同じでなければ送りません。判定できないとき(止まっている・初回)は本番として扱います。開発/検証サーバーには掛かりません。 - サーバー: 出るコミットと注意の要るファイル(migration / compose / プラグイン / bin)を先に見せ、プロジェクト名を打つまで何も変えません(
yでは通しません)。誰が・いつ・何を・結果をvar/deploy.logに残します。 --checkで検査と要約だけ出して何も変えない。非対話はCONFIRM_DEPLOY=<プロジェクト名>。緊急でmain以外を出すならDEPLOY_UNREVIEWED=<プロジェクト名>(記録にUNREVIEWEDと残る)
- 手元: 向こうが本番構成(
bin/setup.sh protectを追加。GitHub 側でmainへの PR 必須・担当者(CODEOWNERS)の承認必須・force push と削除の禁止を入れます。管理者も例外なし。非公開リポジトリは有料プラン(個人は Pro、組織は Team)が要ります。 無料だと 403 を説明して止まり、上の 2 枚だけで運用します。- 本番の SSH を持つ人は壁を素通りできます。 壁は「うっかり」を止めるもので「故意」は止められません。本番の SSH はエンジニアに渡さず、担当者だけが持つ、と決めてください。
docs/deploy.md「誰が・何を・どうやって本番へ出すか」に表があります - macOS で取ったバックアップに AppleDouble(
._ファイル)を混ぜない。(#167)Linux のサーバーで復元すると._customize.cssなどが実ファイルの隣に並び、中身のバイナリが画面の先頭に出ていました。macOS のtar tzfでは見えないので気づきにくい。既に作った書庫は直せないので、復元後にfind app html -name '._*' -delete SECURITY.mdを書きました。脆弱性は GitHub の非公開報告(Security タブ)か info@a-zumi.net へ。公開の Issue には書かないでください。この文書は店の tarball には入りません- 紹介ページに壁 3 枚の節、複数人運用、本番デプロイの文書、脆弱性報告のリンクを追加
Dockerfile は変わっていないので、イメージは焼き直さず v1.0.10 と同じものに -v1.0.11 の名前を足しています。
受け取り方
bin/self-update.sh --check
bin/self-update.sh上げた直後の bin/deploy.sh --remote=… は、手元が main の先頭と同じでないと止まります。git checkout main && git pull してから。複数人で運用しているなら、担当者の手元で bin/setup.sh protect を 1 回。
対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.11 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.11 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.11 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
curl -fsSL https://github.com/kurozumi/eccube-docker/releases/latest/download/eccube-docker.tar.gz | tar -xz
mv eccube-docker-* myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.11 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.10
系列をまたぐバージョンアップ(4.3 → 4.4)で bin/upgrade.sh が phpredis の版を合わせていなかったのを直した版。紹介ページには右下に追従するお問い合わせボタンを置きました。
この版で変わったこと
bin/upgrade.shが、系列をまたぐときに.envのPHPREDIS_VERSIONも合わせる。(#161)
4.2/4.3 は 6.0.2、4.4 は 6.3.0 で、symfony/cache がext-redis <6.1と衝突するため両立しません。
これまでupgrade.shはECCUBE_VERSIONしか書き換えず、4.3 → 4.4 で 6.0.2 が残っていました
(switch-version.shは合わせていたのに、運用中の環境を上げる側だけ抜けていた)。- 値が変わるときだけ「phpredis を X に合わせます」と表示。同系列のパッチ上げでは黙ります
- ビルドに失敗したら
ECCUBE_VERSIONと一緒に元へ戻し、.envが新旧混ざった状態で残らないようにしました
- 紹介ページの右下に、追従する「お問い合わせ / Issue」ボタンを置きました。(#163)
どこを読んでいても Issue とメールに届きます。連絡先の節が見えている間は隠れます。
Dockerfile は変わっていないので、イメージは焼き直さず v1.0.9 と同じものに -v1.0.10 の名前を足しています。
受け取り方
bin/self-update.sh --check
bin/self-update.sh4.3 → 4.4 を予定している人は、この版に上げてから bin/upgrade.sh 4.4.x-dev --prod を。
対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.10 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.10 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.10 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
curl -fsSL https://github.com/kurozumi/eccube-docker/releases/latest/download/eccube-docker.tar.gz | tar -xz
mv eccube-docker-* myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.10 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.9
紹介ページ(LP)に、お問い合わせと Issue 募集の節を独立させて置いた版。 環境のコードは変わっていません。
この版で変わったこと
- 紹介ページに「困ったこと、こう動いてほしいを聞かせてください」の節を追加。 これまでフッターの一行にしか無かった連絡先を、文書の直後に独立した節として出しました。
- 不具合・要望・質問は GitHub Issue へ。それぞれ何を書けばよいかを添えています
- 公開できない相談、受託の構築・引っ越し、B2B サイトの構築、プラグイン開発の依頼はメール(info@a-zumi.net)へ
- 冒頭の CTA からも飛べます
- 紹介ページにファビコンを付けました(#159)
SECURITY.mdを置きました
Dockerfile は変わっていないので、イメージは焼き直さず v1.0.8 と同じものに -v1.0.9 の名前を足しています。
受け取り方
環境のコードに変更は無いので、更新は任意です。
bin/self-update.sh --check
bin/self-update.sh対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.9 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.9 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.9 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
curl -fsSL https://github.com/kurozumi/eccube-docker/releases/latest/download/eccube-docker.tar.gz | tar -xz
mv eccube-docker-* myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.9 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.8
コンテナの中で composer require した外部ライブラリが、bin/upgrade.sh で消えていたのを直した版。
この版で変わったこと
-
外部ライブラリは
app/Customize/composer.extra.json(git 管理)に宣言する。{ "require": { "league/csv": "^9.8" } }docker compose up -dすると、vendorに無いものだけ入ります(あるときは何もしないので起動は遅くならない)。なぜ要るか:
composer.jsonとvendorはeccube_appボリュームの中にあり、git にも backup にも
入りません。bin/upgrade.shはこのボリュームを作り直すので、コンテナの中でcomposer requireした
だけのライブラリは黙って消え、それを使っているapp/Customizeのコードが「Class not found」で
落ちるまで気づけませんでした。この環境の原則「ディスクに残る状態は git か backup のどちらかに
必ず入る」から漏れていた穴です。試すときはコンテナの中で
composer requireして構いません。残すなら書き写して git にコミットしてください。 -
bin/upgrade.shは、ボリュームを消す前に「宣言されていない追加ライブラリ」を列挙して確認を求めます -
取得 URL が版ごとに古びないようにしました。リリースには固定名の
eccube-docker.tar.gzも付きます:curl -fsSL https://github.com/kurozumi/eccube-docker/releases/latest/download/eccube-docker.tar.gz | tar -xz mv eccube-docker-* myshop && cd myshop
-
紹介ページに「PHP・本体・環境のバージョンをそれぞれどう変えるか」を追加(PHP は約 20 秒、データはそのまま)
-
文書の総点検(
docs/install.mdに「リリースタグはまだ打たれていない」という古い記述が残っていた等)
受け取り方
bin/self-update.sh --check
bin/self-update.sh
docker compose up -d # 新しい entrypoint を使うためにコンテナを作り直す対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.8 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.8 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.8 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 同じタグでも焼き直すたびに中身が変わります。本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
git clone ではなく、リリースの中身から自分のリポジトリとして始めます(clone だと origin が配布元のままで、自分のコードを自分の GitHub で管理できません)。
curl -fsSL https://github.com/kurozumi/eccube-docker/archive/refs/tags/v1.0.8.tar.gz | tar -xz
mv eccube-docker-1.0.8 myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.8 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
毎日の 3 つ
# 直す → 控えを送る → 反映する
git push
bin/deploy.sh --remote=shop:/srv/myshop # 退避→メンテ ON→pull→migration→proxy→キャッシュ→確認→OFF困ったら bin/plugin.sh doctor。
.env の主な項目
ECCUBE_IMAGE… 配布イメージを使うなら上の表のタグ。未設定なら手元でビルドCOMPOSE_PROFILES…tunnel/caddyに加えて、redisとmessengerは任意で初回は無効。切り替えると全員ログアウトになるECCUBE_TEMPLATE_CODE…defaultまたはoriginal(bin/theme.sh initのあと)
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.7
cp .env.example .env から始めた人のパスワードが生成されていなかったのを直した版。
bin/init.sh --image= で PHP を選べるようになった。
この版で変わったこと
-
秘密の生成を「値がまだ既定値か」で判断する。 以前は「
.envを新規作成したか」で判断していたため、
docs/install.mdが案内しているcp .env.example .env→bin/init.shの順だと素通りし、
DB はeccube_pass、管理者はadmin/password、管理画面の URL は/admin/、ポートもプロジェクト名も
既定のままになっていた。公開時はbin/publish.shが止めるので事故にはならないが、手元では気づけない。
すでにこの店の DB があれば書き換えない(DB のパスワードはボリュームに焼かれている)。
何度打っても値は変わらない -
bin/init.sh --image=<タグ>:.envを開かずに配布イメージを指定できる。ビルドを省くので数十秒。
PHP はタグで選ぶ(4.3-php8.3のphp8.3の部分。.envのPHP_VERSIONは手元でビルドするときだけ)bin/init.sh --image=ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-php8.3
-
bin/upgrade.sh/bin/switch-version.shが、解決できない指定を build の前に止める。
~4.4.0は数分ビルドしてから composer が落ちていた(.envは書き換わったまま)。いまは 1 秒で止まり、
4.4.x-devと打ち直す形を出す。存在しない系列には入れられる系列を並べる。Packagist に届かないときは通す -
サンプルコマンドを最新 PHP に更新(紹介ページ / README / install.md / handbook / AGENTS.md)
この版のイメージについて
docker/php/ に変更が無いので焼き直していません。v1.0.6 と同じ中身に -v1.0.7 の名前を足しただけです
(35 秒)。OS と PHP のパッチは毎週月曜の焼き直しで入ります。
受け取り方
bin/self-update.sh --check
bin/self-update.sh対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.7 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.7 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.7 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 同じタグでも焼き直すたびに中身が変わります。本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
git clone ではなく、リリースの中身から自分のリポジトリとして始めます(clone だと origin が配布元のままで、自分のコードを自分の GitHub で管理できません)。
curl -fsSL https://github.com/kurozumi/eccube-docker/archive/refs/tags/v1.0.7.tar.gz | tar -xz
mv eccube-docker-1.0.7 myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.7 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
毎日の 3 つ
# 直す → 控えを送る → 反映する
git push
bin/deploy.sh --remote=shop:/srv/myshop # 退避→メンテ ON→pull→migration→proxy→キャッシュ→確認→OFF困ったら bin/plugin.sh doctor。
.env の主な項目
ECCUBE_IMAGE… 配布イメージを使うなら上の表のタグ。未設定なら手元でビルドCOMPOSE_PROFILES…tunnel/caddyに加えて、redisとmessengerは任意で初回は無効。切り替えると全員ログアウトになるECCUBE_TEMPLATE_CODE…defaultまたはoriginal(bin/theme.sh initのあと)
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.6
bin/upgrade.sh / bin/switch-version.sh が、解決できないバージョン指定を build の前に止めるようになった版。
この版で変わったこと
-
bin/upgrade.sh ~4.4.0は、制約を確かめずに.envを書き換えて build に入り、composer が
「Could not find package ec-cube/ec-cube with version ~4.4.0」で落ちるまで数分かかっていた
(.envは書き換わったまま)。EC-CUBE 4.4 は Packagist にリリースが 1 つも無く、あるのは
上流のブランチ(4.4.x-dev)だけ、というのは文書にしか書いていなかった -
これからは 1 秒で止まり、
.envも変わらない。打ち直す形をそのまま出す:エラー: EC-CUBE 4.4 は **まだリリースされていません**(Packagist に安定版が 1 つも無い)。 ~4.4.0 は解決できないので、build を始めずに止めました(.env は変えていません)。 bin/upgrade.sh 4.4.x-dev -
存在しない系列(
~4.9.0など)には、入れられる系列を並べて止める -
Packagist への問い合わせに 1 つでも失敗したら黙って通す(判定できないことで作業を止めない)
4.4 を使うなら、build せず配布イメージを引くほうが速い:
ECCUBE_IMAGE=ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-php8.3この版のイメージについて
docker/php/ に変更が無いので、焼き直していません。v1.0.5 と同じ中身に -v1.0.6 の名前を
足しただけです(57 秒。来歴と SBOM もそのまま)。OS と PHP のパッチは毎週月曜の焼き直しで入ります。
受け取り方
bin/self-update.sh --check
bin/self-update.sh対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.6 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.6 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.6 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 同じタグでも焼き直すたびに中身が変わります。本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
git clone ではなく、リリースの中身から自分のリポジトリとして始めます(clone だと origin が配布元のままで、自分のコードを自分の GitHub で管理できません)。
curl -fsSL https://github.com/kurozumi/eccube-docker/archive/refs/tags/v1.0.6.tar.gz | tar -xz
mv eccube-docker-1.0.6 myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.6 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
毎日の 3 つ
# 直す → 控えを送る → 反映する
git push
bin/deploy.sh --remote=shop:/srv/myshop # 退避→メンテ ON→pull→migration→proxy→キャッシュ→確認→OFF困ったら bin/plugin.sh doctor。
.env の主な項目
ECCUBE_IMAGE… 配布イメージを使うなら上の表のタグ。未設定なら手元でビルドCOMPOSE_PROFILES…tunnel/caddyに加えて、redisとmessengerは任意で初回は無効。切り替えると全員ログアウトになるECCUBE_TEMPLATE_CODE…defaultまたはoriginal(bin/theme.sh initのあと)
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.5
初めての人が、自分のパソコンからコマンドを打つだけで公開まで行けるようにした版。
サーバーに入って何かを打つ場面も、.env を開く場面も無くした。
この版で変わったこと
bin/init.shは打つだけ。 Docker が無い/動いていない/Compose が古ければ日本語で「何をすればよいか」を
出して止まる。8080 が使われていれば空いているポートを自動で選ぶ(同じパソコンに 2 つ目の店を置いても衝突しない)。
終わるまで待って、お店の URL・管理画面の URL(admin-<乱数>)・ログイン ID・パスワードを表示するbin/setup.sh mail | db | tunnel | backup。 質問に答える → 先に試す(1 通送る/DB に繋ぐ/
Tunnel が繋がる/送り先に書ける)→ 通ったときだけ.envに書く。メールは SendGrid / SES / Gmail /
さくら等 / Resend のプリセット。DB は外部(マネージド DB)へ、いまのデータを写して切り替えられる。
backup は暗号化の鍵を作り、1 回取り、毎日 4:00 の cron に登録する- サーバーに git も GitHub の鍵も要らない。
bin/bootstrap-server.sh user@host /srv/myshopが手元から
Docker を入れ、店のファイルを送り、.envを作る。bin/deploy.sh --remote=は.gitの無いサーバーには
手元から rsync で送る(push モード)。publish.sh/setup.shも--remote=で手元から - AI に任せられる。 配布物に
AGENTS.md(やること・絶対にやらないこと)。全 18 コマンドに--help - 本番でメールが未設定・Mailpit 宛てのままなら
publish.shが止まり、doctorが警告する - 単一ホスト構成でも外部 DB を指せるようにした(
DB_HOST。compose.externaldb.yaml) - Windows は WSL2 の中で、を明記
素人の道筋(全部、自分のパソコンから)
bin/init.sh # 手元で動く
bin/bootstrap-server.sh user@vps /srv/myshop # サーバーを整える(1 分)
bin/setup.sh mail --remote=user@vps:/srv/myshop
bin/setup.sh tunnel --remote=user@vps:/srv/myshop
bin/publish.sh --remote=user@vps:/srv/myshop
bin/setup.sh backup --remote=user@vps:/srv/myshop
bin/deploy.sh --remote=user@vps:/srv/myshop # 以後、直したら受け取り方
bin/self-update.sh --check
bin/self-update.sh対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.5 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.5 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.5 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 同じタグでも焼き直すたびに中身が変わります。本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
git clone ではなく、リリースの中身から自分のリポジトリとして始めます(clone だと origin が配布元のままで、自分のコードを自分の GitHub で管理できません)。
curl -fsSL https://github.com/kurozumi/eccube-docker/archive/refs/tags/v1.0.5.tar.gz | tar -xz
mv eccube-docker-1.0.5 myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.5 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
毎日の 3 つ
# 直す → 控えを送る → 反映する
git push
bin/deploy.sh --remote=shop:/srv/myshop # 退避→メンテ ON→pull→migration→proxy→キャッシュ→確認→OFF困ったら bin/plugin.sh doctor。
.env の主な項目
ECCUBE_IMAGE… 配布イメージを使うなら上の表のタグ。未設定なら手元でビルドCOMPOSE_PROFILES…tunnel/caddyに加えて、redisとmessengerは任意で初回は無効。切り替えると全員ログアウトになるECCUBE_TEMPLATE_CODE…defaultまたはoriginal(bin/theme.sh initのあと)
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.4
v1.0.3 のあとの小さな版。利用者側の動作は変わらない(受け取っても docker compose up -d は不要。
イメージは月曜の焼き直しで自動的に新しくなる)。
この版で変わったこと
- Dockerfile に
apt-get upgrade。 土台のphp:8.xイメージが焼き直されるのを当てにせず、毎週の
焼き直しで Debian の最新パッチを入れる。PHP 8.1 の土台は EOL で二度と焼き直されないため、
4.3-php8.1 には修正済みの CVE が 2,398 件残っていた(Trivy)。この変更で 72 件(8.2 / 8.3 と
同じ。残りは EC-CUBE 4.3 の vendor で、上流のパッチ版待ち) - PHP 8.1 は EOL と明記(.env.example / docs / 紹介ページ)。残してはあるが、OS のパッチは入っても
PHP 自体の修正はもう出ない。8.1 でしか動かないプラグインが無ければ 8.2 以上を - Dockerfile が変わっていないリリースはイメージを焼かない。 前のタグから
docker/php/**と
ワークフローに差分が無ければ、追跡タグに-vX.Y.Zの名前を足すだけ(数秒。来歴と SBOM もそのまま)。
文書や bin/ だけのリリースで 9 通り × 4 分を回さない pecl installを 3 回まで試す(pecl.php.net の一時的な失敗でリリースのビルドが落ちていた)
受け取り方
bin/self-update.sh --check
bin/self-update.sh対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.4 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.4 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.4 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 同じタグでも焼き直すたびに中身が変わります。本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
git clone ではなく、リリースの中身から自分のリポジトリとして始めます(clone だと origin が配布元のままで、自分のコードを自分の GitHub で管理できません)。
curl -fsSL https://github.com/kurozumi/eccube-docker/archive/refs/tags/v1.0.4.tar.gz | tar -xz
mv eccube-docker-1.0.4 myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.4 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
毎日の 3 つ
# 直す → 控えを送る → 反映する
git push
bin/deploy.sh --remote=shop:/srv/myshop # 退避→メンテ ON→pull→migration→proxy→キャッシュ→確認→OFF困ったら bin/plugin.sh doctor。
.env の主な項目
ECCUBE_IMAGE… 配布イメージを使うなら上の表のタグ。未設定なら手元でビルドCOMPOSE_PROFILES…tunnel/caddyに加えて、redisとmessengerは任意で初回は無効。切り替えると全員ログアウトになるECCUBE_TEMPLATE_CODE…defaultまたはoriginal(bin/theme.sh initのあと)
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.3
セキュリティ監査 22 件(#100〜#121)を全部入れた版。既存の環境は bin/self-update.sh のあと
docker compose up -d で全コンテナが作り直される(ネットワークと権限が変わるため)。
この版で変わったこと
外から見えるもの
- nginx が実行するのは
/index.phpだけ。html/uploadやhtml/user_dataに.phpを置かれても動かない(#104) - セキュリティヘッダ 4 つ、
/fpm-status遮断(#115 #121) - ログインと
/forgotに 1 IP 10 回/分のレート制限、超えたら 429。本当のクライアント IP で数える(#116) - 本番の
TRUSTED_PROXIES既定がREMOTE_ADDR。tunnel でも HTTPS 判定・Secure Cookie・実 IP が正しくなる(#106) - 開発ポート(phpMyAdmin / Mailpit / nginx)は既定で 127.0.0.1 にだけ開く(#109)
中身
.envをアプリのコンテナに丸ごと渡さない。任意設定は.env.app(#107)。DB_PASSWORD等は必須で、
既定値eccube_passで黙って立ち上がらない(#110)- 全コンテナ
no-new-privileges+cap_drop: ALL、frontend/backendのネットワーク分離、
Redis 認証(REDIS_PASSWORD)(#112 #117) - 初期管理者:
init.shがパスワードと管理画面 URL(admin-<乱数>)を生成。publish.shは DB を見て
admin がpasswordのままなら公開しない(#108) - Redis セッション共有が実は効いていなかった(
handler_idがnative_fileのまま)のを直した。
redis プロファイルを使っている人はこの更新で全員ログアウトになる - バックアップの暗号化
BACKUP_ENCRYPT_KEY(AES-256。restore は透過的に復号)(#118) self-update.shがリリースの添付を sha256 と署名で検証してから展開(#120)。この版から添付が付く- CI: Actions を SHA 固定、来歴と SBOM、Trivy スキャン。イメージから vim / ssh を外す(#103 #111 #114)
- 文書: 焼き直しで変わらないもの(#113)、複数ホストの管理画面の書き込み(#100)、ログの外部保存(#119)、
秘密の保管(#101)、README の bin 一覧(#102)
受け取り方
bin/self-update.sh --check # 何が変わるか見る
bin/self-update.sh # 取り込む → git で差分を見て commit
docker compose up -d # 全コンテナが作り直される.env に独自のキーを足して EC-CUBE に読ませていた人は、そのキーを .env.app へ。
Redis を使っている人は .env に REDIS_PASSWORD を足して REDIS_URL / SESSION_REDIS_URL を
redis://:<pass>@redis:6379 の形に(付けなくても動く)。
対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.3 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.3 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.3 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 同じタグでも焼き直すたびに中身が変わります。本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
git clone ではなく、リリースの中身から自分のリポジトリとして始めます(clone だと origin が配布元のままで、自分のコードを自分の GitHub で管理できません)。
curl -fsSL https://github.com/kurozumi/eccube-docker/archive/refs/tags/v1.0.3.tar.gz | tar -xz
mv eccube-docker-1.0.3 myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.3 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
毎日の 3 つ
# 直す → 控えを送る → 反映する
git push
bin/deploy.sh --remote=shop:/srv/myshop # 退避→メンテ ON→pull→migration→proxy→キャッシュ→確認→OFF困ったら bin/plugin.sh doctor。
.env の主な項目
ECCUBE_IMAGE… 配布イメージを使うなら上の表のタグ。未設定なら手元でビルドCOMPOSE_PROFILES…tunnel/caddyに加えて、redisとmessengerは任意で初回は無効。切り替えると全員ログアウトになるECCUBE_TEMPLATE_CODE…defaultまたはoriginal(bin/theme.sh initのあと)
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。
v1.0.2
「PHP のセキュリティパッチも迅速に」を嘘なく言えるようにした版。PHP と DB の版も選べます。
bin/self-update.sh で受け取れます。
この版で変わったこと
- 配布イメージを毎週月曜 03:00 JST に焼き直す(#94)。土台の
php:8.x-fpm-bookwormは浮動タグなので、焼き直すだけで PHP と Debian のセキュリティパッチが入る。焼くのは最新リリースのタグの Dockerfile、キャッシュ無し。追跡タグ(4.3/4.3-php8.3)と日付タグ(4.3-20260907)が動き、-vX.Y.Zは不変。PHP に重大な脆弱性が出た日は手動実行(refresh)で当日焼く - 本番の推奨を変えた:
ECCUBE_IMAGE=...:4.3(追跡)+bin/deploy.sh。deploy が「イメージが変わっていれば引き直す」ので、毎日の deploy で PHP が新しくなる。PHP のパッチにupgrade.shは要らない(PHP は本体コードのボリュームの外)。今まで推奨していた4.3-v1.0.1のような固定タグは、パッチが入らないので「再現したいとき」用に - PHP を選べる:
4.2-php8.1/4.3-php8.3/4.4-php8.5のように。上流の対応一覧どおり 4.2: 8.1/8.2、4.3: 8.1/8.2/8.3、4.4: 8.2/8.3/8.4/8.5。-php無しは系列の既定(4.2/4.3: 8.2、4.4: 8.3)で今までと同じ - DB の版を選べる:
.envのMARIADB_VERSION(10.6 / 10.11 / 11.4、MySQL 本家はMARIADB_IMAGE=mysql)/PG_VERSION(14〜17)。db サービスの image と Doctrine のserverVersionの両方に効く - PHP 8.5 では opcache が本体組み込みになったので、Dockerfile がそれを見て
ext-installを飛ばす
既存の環境への影響
なし。.env に何も足さなければ今までどおり。ECCUBE_IMAGE を固定タグのままにしていればパッチも入らない(入れたいなら追跡タグへ)。
対応する EC-CUBE
| 系列 | ECCUBE_VERSION |
PHP | phpredis | イメージ |
|---|---|---|---|---|
| 4.2 | ~4.2.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.2-v1.0.2 |
| 4.3 | ~4.3.0 |
8.2 | 6.0.2 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.3-v1.0.2 |
| 4.4 | 4.4.x-dev |
8.3 | 6.3.0 | ghcr.io/kurozumi/eccube-docker/ec-cube:4.4-v1.0.2 |
4.4 は Packagist にリリースが無く、上流の 4.4 ブランチから焼いています。 同じタグでも焼き直すたびに中身が変わります。本番で 4.4 を使うなら 4.4-<sha> で固定してください。
使い始める
git clone ではなく、リリースの中身から自分のリポジトリとして始めます(clone だと origin が配布元のままで、自分のコードを自分の GitHub で管理できません)。
curl -fsSL https://github.com/kurozumi/eccube-docker/archive/refs/tags/v1.0.2.tar.gz | tar -xz
mv eccube-docker-1.0.2 myshop && cd myshop
git init -b main && git add -A && git commit -m "eccube-docker v1.0.2 から開始"
gh repo create myshop --private --source=. --push続きは docs/handbook.md(初心者向け)と docs/install.md。
毎日の 3 つ
# 直す → 控えを送る → 反映する
git push
bin/deploy.sh --remote=shop:/srv/myshop # 退避→メンテ ON→pull→migration→proxy→キャッシュ→確認→OFF困ったら bin/plugin.sh doctor。
.env の主な項目
ECCUBE_IMAGE… 配布イメージを使うなら上の表のタグ。未設定なら手元でビルドCOMPOSE_PROFILES…tunnel/caddyに加えて、redisとmessengerは任意で初回は無効。切り替えると全員ログアウトになるECCUBE_TEMPLATE_CODE…defaultまたはoriginal(bin/theme.sh initのあと)
ライセンス
Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。