バージョン選択

フォーラム

メニュー

オンライン状況

76 人のユーザが現在オンラインです。 (68 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 76
もっと...

サイト内検索

質問 > 管理機能 > Docker 開発環境でのプラグイン管理

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
swat
投稿日時: 2024/4/24 17:38
対応状況: −−−
新米
登録日: 2024/4/24
居住地:
投稿: 2
Docker 開発環境でのプラグイン管理
[EC-CUBE] EC-CUBE 4.2.0 Docker 開発環境
[レンタルサーバ] ローカルサーバー
[OS]
・ホスト: WSL2(Ubuntu)
・コンテナ: Debian bullseye
[PHP] 8.1.27
[データベース] PostgreSQL 14
[WEBサーバ] Apache2.4
[ブラウザ] Chrome
[導入プラグインの有無]
ペイパル チェックアウト 決済プラグイン(4.2系)
Cookie同意管理プラグイン(4.2系)
[カスタマイズの有無] 今後する予定

[現象]
公式ドキュメントを参考に、Docker Compose でローカルファイルマウントして開発環境コンテナを構築しました。
使いたいプラグインをインストールし、正常に動作することを確認しました。
するとローカルの composer.json, composer.lock ファイルが更新されます。

次に、composer ファイルが更新された状態でコンテナとボリュームを削除し、再度コンテナを作成しました。
プラグインの再インストールをしようとしたところ、エラーは出ないもののプラグインの有効化ボタンが出ない(「インストール」ボタンのまま)状態になりました。

composer ファイルを最初の状態にリセットしてから、再度コンテナ作成した場合は正常にインストールできました。
そのことから、composer ファイルと実際の状態に乖離があるとプラグインが正常にインストールできないものと理解しました。
そこで疑問なのですが、

1. composer ファイルが更新された状態で、プラグインを再インストールすることは可能なのでしょうか?
2. そもそも composer ファイルは初期状態にしておくべきで、Git などで管理しない方がいいのでしょうか?
3. もしくは、プラグインのインストール状態を維持したままコンテナ作成する方法があるのでしょうか?

ご教示頂けますと幸いです。
mcontact
投稿日時: 2024/4/24 18:13
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1326
Re: Docker 開発環境でのプラグイン管理
> 1. composer ファイルが更新された状態で、プラグインを再インストールすることは可能なのでしょうか?

プラグインや独自カスタマイズからcomposerファイルを更新された状態で、Dockerでのプラグインの再インストールは可能です。

> 2. そもそも composer ファイルは初期状態にしておくべきで、Git などで管理しない方がいいのでしょうか?

Dockerを利用して複数人数で開発される場合は、独自カスタマイズでcomposerファイルをいじる特段の理由がない限りは弊社ではgit pushしないですね。

> 3. もしくは、プラグインのインストール状態を維持したままコンテナ作成する方法があるのでしょうか?

Dockerを立ち上げた後に、初期環境整備用にshellなどを作ってプラグインをインストール状態にすることはありますね。


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

swat
投稿日時: 2024/4/25 18:59
対応状況: −−−
新米
登録日: 2024/4/24
居住地:
投稿: 2
Re: Docker 開発環境でのプラグイン管理
ご回答いただきありがとうございます。

1. についてはプラグインインストール後にできた以下のファイルを削除することで、composer ファイルが更新された状態でも再インストールができるようになりました。
・app/Plugin/ 配下のファイル
・app/proxy/entity/src ディレクトリ
手動で削除しなければならないのがネックですが、そう頻繁にある作業ではないので大丈夫かなと。
別PCで新規構築する場合は問題にならないですし。

3. については、eccube コマンドでのプラグインインストール方法を調べました。

# postgres コンテナで実行
psql -U dbuser eccubedb -c "update dtb_base_info set authentication_key='認証キー';"

# eccube コンテナで実行
bin/console eccube:composer:require ec-cube/PayPalCheckout42
bin/console eccube:plugin:enable --code PayPalCheckout42
bin/console eccube:composer:require ec-cube/RefineCookie42
bin/console eccube:plugin:enable --code RefineCookie42
bin/console cache:clear --no-warmup
bin/console cache:warmup


このコマンドをうまく composer.json に取り込めばプラグインのインストールまで自動化できそうですが、それはまたの機会に検討しようと思います。

ひとまず疑問点は解消できましたので、ありがとうございました。
nanasess
投稿日時: 2024/5/2 11:48
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2314
Re: Docker 開発環境でのプラグイン管理
引用:

1. についてはプラグインインストール後にできた以下のファイルを削除することで、composer ファイルが更新された状態でも再インストールができるようになりました。
・app/Plugin/ 配下のファイル
・app/proxy/entity/src ディレクトリ


手前味噌で恐縮ですが、以下の Composer ローカルリポジトリを使用することで解消できます
https://zenn.dev/nanasess/articles/ec-cube4-plugin-development

具体的には、以下の流れでインストールします
1. インストールしたいプラグインを path/to/ec-cube/plugin_repos 等、 app/Plugin とは別の場所に配置する
2. bin/console eccube:composer:require コマンドでプラグインをインストールする

引用:

このコマンドをうまく composer.json に取り込めばプラグインのインストールまで自動化できそうですが、それはまたの機会に検討しようと思います。


docker-php-entrypoint にプラグインインストールコマンドを含めてしまう場合が多いですね

https://github.com/EC-CUBE/ec-cube/blob/4.3/dockerbuild/docker-php-entrypoint


INSTALL_PLUGINS=Example1Plugin,Example2Plugin

## split comma separated string into array
if [ -z ${INSTALL_PLUGINS} ]; then
    declare -a plugins=()
else
    plugins=(${INSTALL_PLUGINS//,/ })
fi

# get length of an array
arraylength=${#plugins[@]}

# use for loop to read all values and indexes
for (( i=0; i<${arraylength}; i++ ));
do
    echo "-----START: Install ${plugins[$i]} plugin -----";
    bin/console eccube:composer:require ec-cube/${plugins[$i],,} --from=plugin_repos/${plugins[$i]}
    # Uncomment in production environment
    # composer config repositories.plugin_repos${plugins[$i],,} '{"type":"path","url":"./plugin_repos/'${plugins[$i]}'", "options": { "symlink": false }}'
    # --if-not-exists オプションは EC-CUBE4.3 以降で使用できます
    bin/console eccube:plugin:install --code=${plugins[$i]} --if-not-exists
    bin/console eccube:plugin:enable --code=${plugins[$i]}
    echo "-----END: Install ${plugins[$i]} plugin -----";
done

# regenerate entity proixes
rm -rf app/proxy/entity/src
bin/console eccube:generate:proxies
bin/console cache:clear --no-warmup

# schema update & migrate
bin/console doctrine:schema:update --dump-sql
bin/console doctrine:schema:update --dump-sql --force
bin/console doctrine:migrations:migrate --no-interaction

# regenerate composer autoloads & warmup cache
composer dump-autoload --optimize --apcu
bin/console cache:warmup --no-optional-warmers

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,665名です
総投稿数は110,149件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1657
8
red
1570
9
mcontact
1326
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.