Skip to content

Releases: kurozumi/eccube-docker

v1.0.11

Choose a tag to compare

@kurozumi kurozumi released this 08 Sep 14:07
e175146

本番には、レビュー済みの main しか出ないようにした版。エンジニアが直し、担当者が承認して本番へ出す運用で、「エンジニアが勝手に出す」と「担当者がうっかり出す」を別々の壁で止めます。

この版で変わったこと

  • bin/deploy.sh に壁を 2 枚組み込んだ。#166)何もしなくて効きます。
    • 手元: 向こうが本番構成(compose.prod.yaml で稼働中)なら、いまのブランチが main.envDEPLOY_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

Choose a tag to compare

@kurozumi kurozumi released this 08 Sep 08:18
17e0054

系列をまたぐバージョンアップ(4.3 → 4.4)で bin/upgrade.sh が phpredis の版を合わせていなかったのを直した版。紹介ページには右下に追従するお問い合わせボタンを置きました。

この版で変わったこと

  • bin/upgrade.sh が、系列をまたぐときに .envPHPREDIS_VERSION も合わせる。#161
    4.2/4.3 は 6.0.2、4.4 は 6.3.0 で、symfony/cache が ext-redis <6.1 と衝突するため両立しません。
    これまで upgrade.shECCUBE_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.sh

4.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

Choose a tag to compare

@kurozumi kurozumi released this 08 Sep 07:51
92acfa3

紹介ページ(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

Choose a tag to compare

@kurozumi kurozumi released this 06 Sep 09:03
072b149

コンテナの中で composer require した外部ライブラリが、bin/upgrade.sh で消えていたのを直した版。

この版で変わったこと

  • 外部ライブラリは app/Customize/composer.extra.json(git 管理)に宣言する。

    { "require": { "league/csv": "^9.8" } }

    docker compose up -d すると、vendor に無いものだけ入ります(あるときは何もしないので起動は遅くならない)。

    なぜ要るか: composer.jsonvendoreccube_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_PROFILEStunnel / caddy に加えて、redismessenger任意で初回は無効。切り替えると全員ログアウトになる
  • ECCUBE_TEMPLATE_CODEdefault または originalbin/theme.sh init のあと)

ライセンス

Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。

v1.0.7

Choose a tag to compare

@kurozumi kurozumi released this 06 Sep 08:17
b08512c

cp .env.example .env から始めた人のパスワードが生成されていなかったのを直した版。
bin/init.sh --image= で PHP を選べるようになった。

この版で変わったこと

  • 秘密の生成を「値がまだ既定値か」で判断する。 以前は「.env を新規作成したか」で判断していたため、
    docs/install.md が案内している cp .env.example .envbin/init.sh の順だと素通りし、
    DB は eccube_pass、管理者は admin / password、管理画面の URL は /admin/、ポートもプロジェクト名も
    既定のまま
    になっていた。公開時は bin/publish.sh が止めるので事故にはならないが、手元では気づけない。
    すでにこの店の DB があれば書き換えない(DB のパスワードはボリュームに焼かれている)。
    何度打っても値は変わらない

  • bin/init.sh --image=<タグ>: .env を開かずに配布イメージを指定できる。ビルドを省くので数十秒。
    PHP はタグで選ぶ4.3-php8.3php8.3 の部分。.envPHP_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_PROFILEStunnel / caddy に加えて、redismessenger任意で初回は無効。切り替えると全員ログアウトになる
  • ECCUBE_TEMPLATE_CODEdefault または originalbin/theme.sh init のあと)

ライセンス

Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。

v1.0.6

Choose a tag to compare

@kurozumi kurozumi released this 06 Sep 07:58
b87454e

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_PROFILEStunnel / caddy に加えて、redismessenger任意で初回は無効。切り替えると全員ログアウトになる
  • ECCUBE_TEMPLATE_CODEdefault または originalbin/theme.sh init のあと)

ライセンス

Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。

v1.0.5

Choose a tag to compare

@kurozumi kurozumi released this 06 Sep 06:50
d4b4561

初めての人が、自分のパソコンからコマンドを打つだけで公開まで行けるようにした版。
サーバーに入って何かを打つ場面も、.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_HOSTcompose.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_PROFILEStunnel / caddy に加えて、redismessenger任意で初回は無効。切り替えると全員ログアウトになる
  • ECCUBE_TEMPLATE_CODEdefault または originalbin/theme.sh init のあと)

ライセンス

Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。

v1.0.4

Choose a tag to compare

@kurozumi kurozumi released this 05 Sep 15:20
9721aad

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_PROFILEStunnel / caddy に加えて、redismessenger任意で初回は無効。切り替えると全員ログアウトになる
  • ECCUBE_TEMPLATE_CODEdefault または originalbin/theme.sh init のあと)

ライセンス

Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。

v1.0.3

Choose a tag to compare

@kurozumi kurozumi released this 05 Sep 14:17
7f9c8bc

セキュリティ監査 22 件(#100#121)を全部入れた版。既存の環境は bin/self-update.sh のあと
docker compose up -d で全コンテナが作り直される
(ネットワークと権限が変わるため)。

この版で変わったこと

外から見えるもの

  • nginx が実行するのは /index.php だけ。html/uploadhtml/user_data.php を置かれても動かない(#104
  • セキュリティヘッダ 4 つ、/fpm-status 遮断(#115 #121
  • ログインと /forgot に 1 IP 10 回/分のレート制限、超えたら 429。本当のクライアント IP で数える(#116
  • 本番の TRUSTED_PROXIES 既定が REMOTE_ADDRtunnel でも 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: ALLfrontend / backend のネットワーク分離、
    Redis 認証(REDIS_PASSWORD)(#112 #117
  • 初期管理者: init.sh がパスワードと管理画面 URL(admin-<乱数>)を生成。publish.sh は DB を見て
    admin が password のままなら公開しない(#108
  • Redis セッション共有が実は効いていなかったhandler_idnative_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 を使っている人は .envREDIS_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_PROFILEStunnel / caddy に加えて、redismessenger任意で初回は無効。切り替えると全員ログアウトになる
  • ECCUBE_TEMPLATE_CODEdefault または originalbin/theme.sh init のあと)

ライセンス

Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。

v1.0.2

Choose a tag to compare

@kurozumi kurozumi released this 05 Sep 09:00
7eace36

「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 の版を選べる: .envMARIADB_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_PROFILEStunnel / caddy に加えて、redismessenger任意で初回は無効。切り替えると全員ログアウトになる
  • ECCUBE_TEMPLATE_CODEdefault または originalbin/theme.sh init のあと)

ライセンス

Apache License 2.0。EC-CUBE 本体は対象外(本体は一切改変しておらず、EC-CUBE 自身のライセンスがそのまま適用されます)。