Magento2 Docker開発環境の構築
Docker-compose for Magento2, Varnish5, Redis5, MySQL5.7
ここでは、最新の(Magento2.3.3)の開発環境の構築について説明します。
アカウントの取得
Magentoをインストールする為には、MagentoのDevelopperサイトにサインアップして、アカウントを作成する必要があります。
サインアップが出来たらマーケットプレイスのサイトにアクセスしてサインインします。また、そこから以下URLに移動するとアクセスキーの取得・表示が行えますのでここで表示されたキーを控えます。
Public Key: インストール時に Username として使用します。
Private Key: インストール時に Password として使用します。
Dockerファイルのダウンロード(もしくはクローン)
Docker for Mac を使っている場合は、ファイル共有が遅くなるので、Vagrantを用意して立ち上げてください。以下リポジトリのREADMEに立ち上げ方を記述してあります。また、Dockerの構成に必要な一連のファイルも以下のリポジトリにまとめてありますので、クローンするかダウンロードして展開します。
httpdの種類別に2つ作成してあります。nginxの方が新しくよりチューンナップされていてお勧めです。
(Nginx Version) MailCatcher でMagentoから送信したメールが確認できます。
https://github.com/bluemooninc/magento2nginx
(Apache Version)少し古いですが、Redis,Varnishなど設定が載っています。
https://github.com/bluemooninc/magento-docker-base
git clone [email protected]:bluemooninc/magento-docker-base.git
cd magento-docker-base
docker-compose up
どちらもクローンした後に docker-compose で構成をビルドします。
Docker for macintosh を使用している場合は、アンインストールしてVagrantにすることを強くお勧めします。(Mac,Docker間のファイル共有のスピードに問題があり、symfonyベースのプロジェクトは特に遅くなることが確認されています。)
Magento2のインストール
Composer を使用してMagentoのインストールを行います。
docker exec -it apache2 bash
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /var/www/html/magento
Username: [YOUR-PUBLIC-KEY]
Password: [YOUR-PRIVATE-KEY]
データベースの作成
Dockerのビルドが完了したら http://localhost:8085/ で phpMyAdmin にアクセスする事ができるので、SQLコマンドにて以下の通りのデータベースを作成します。
CREATE DATABASE magento DEFAULT CHARACTER SET utf8mb4;
Magentoのセットアップ
ブラウザからのインストール
dockerが立ち上がっていれば、localhostにアクセスすればセットアップが始まります。環境のチェックから始まり、Databaseの設定は localhost や 127.0.0.1 でなく docker のコンテナ名で指定する事に留意してください。docker-composer に記載してあるコンテナ名 ( mysql_host ) で指定します。最後まで進むと、Successの表示とともに管理者のアカウント設定情報が表示されますのでメモします。
コマンドラインからのインストール
Magentoの作業フォルダに移動して、セットアップを行います。
cd magento
bin/magento setup:install \
--base-url=http://localhost \
--db-host=mysql_host \
--db-name=magento \
--db-user=root \
--db-password=root \
--admin-firstname=admin \
--admin-lastname=admin \
[email protected] \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1
## セットアップが完了すると以下の様にURLが表示されます。
¥[SUCCESS]: http://localhost/magento/
¥[SUCCESS]: http://localhost/magento/admin_?????
Cronのインストール
Cronの実行を予定しているのであればインストールします。
# cronをインストール
php bin/magento cron:install
# 確認
crontab -e
# do daily/weekly/monthly maintenance
# min hour day month weekday command
*/15 * * * * run-parts /etc/periodic/15min
0 * * * * run-parts /etc/periodic/hourly
0 2 * * * run-parts /etc/periodic/daily
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
#~ MAGENTO START f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
* * * * * /usr/local/bin/php /var/www/html/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento/var/log/magento.cron.
* * * * * /usr/local/bin/php /var/www/html/magento/update/cron.php >> /var/www/html/magento/var/log/update.cron.log
* * * * * /usr/local/bin/php /var/www/html/magento/bin/magento setup:cron:run >> /var/www/html/magento/var/log/setup.cron.log
#~ MAGENTO END f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
インデックスの貼り直し
インデックスを貼り直すメッセージが表示された場合に実行します。
php bin/magento indexer:reindex
Redisによるキャッシング
Magentoのコンフィグセッティングにて追加します。
docker exec -it apache2 bash
cd magento
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=redis_host
Redisのモニタリング
docker exec -it redis_host bash
redis-cli monitor
Trouble shooting
An error has happened during application run. See exception log for details.
もしブラウザで上記のメッセージが表示された場合はキャッシュをクリアする事で正常に動作させる事ができます。
redis-cli flushall
Varnishのモニタリング
Varnishの状況を確認する為にモニタリングを実行します。
docker exec -it varnish bash
varnishstat
以上で、各種ミドルウェアの設定を行いローカルで開発する環境が整います。
Varnish,Redisは開発ではなくても良いですができるだけ本番に近い環境で開発する事で、色々な気づきもあると思います。
コマンドメモ
コンテンツの吐き出し、キャッシュクリア、Diのコンパイルコマンドメモです。徐々に解説を更新していく予定です。
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento setup:static-content:deploy ja_JP
php bin/magento cache:flush;
php bin/magento cache:clean
サンプルデータのデプロイ
Magento2 には、レッスン用のサンプルデータをデプロイする仕組みが備わっています。最初に管理者としてのオペレーションに慣れる為に、以下リポジトリにあるドキュメントを参照してデプロイします。
Composerでインストールすれば、サンプルデータのデプロイ設定も登録されていますので、以下コマンドで実行可能です。
cd magento
# サンプルデータ取得
php bin/magento sampledata:deploy
# 取得したサンプルデータでセットアップを実行
php bin/magento setup:upgrade
メモリの確認
composer はメモリが少なくてエラーとなる場合があります。php.iniを編集してメモリが確保されたか確認しながら適切な設定をします。デフォルトは128Mですが、上限エラーを回避して行った結果1Gでは足りず2G割り当てました。
## メモリの確認
php -i | grep memory_limit
## php.iniの場所確認
php -r "echo phpinfo();" | grep "php.ini"
デバッグのオン・オフ
magentoの反応が重いと感じたのでデバッグモードをオフにしてみます。
# デバッグオフ
php bin/magento setup:config:set --enable-debug-logging=false && php bin/magento cache:flush
# デバッグオン
php bin/magento setup:config:set --enable-debug-logging=true && php bin/magento cache:flush
メール送信
localhostからメールを送るには、MailCatcherを利用します。php.iniのsendmail_pathに設定して利用します。
## 設定例
sendmail_path = /usr/bin/env catchmail --smtp-ip smtp --smtp-port 1025
Author And Source
この問題について(Magento2 Docker開発環境の構築), 我々は、より多くの情報をここで見つけました https://qiita.com/bluemooninc/items/fe5548dbdd8a5105a835著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .