MagentoのDocker環境を作った訳ですが、サンプルデータを後から投入しようとすると、やはり、「PHP Fatal error: Allowed memory size of xxx bytes exhausted」が発生したりして、Dockerの出来合いの環境ならもう少しすんなり行くかなと言う期待は、あまり応えてはもらえませんでした。
そこで、ちょっと浮気をしてみます。
Docker力強化も兼ねて、今回もDocker環境を作ります。
WooCommerce入りのDocker Hubのイメージもありますが、そこは後からプラグイン入れても良いよね、ということでwordpress環境をまず作ります。
イメージは、あえて公式ではなく、先日の構成を参考にして、bitnami版にしてみます。
今回は、最初から、ymlに永続化用の記述をしておきます。
mkdir docker/WooCommerce
mkdir docker/WooCommerce/wc-mariadb-persistence
mkdir docker/WooCommerce/wc-wordpress-persistence
cd docker/WooCommerce/
curl -LO https://raw.githubusercontent.com/bitnami/bitnami-docker-wordpress/master/docker-compose.yml
・・・yml編集・・・
docker-compose up -d やはり、wordpressセットアップ画面をすっ飛ばして、サイトが立ち上がっている状態まで来てくれます。
管理画面はwp-admin、ユーザ・パスワードは、Settings画面参照(WORDPRESS_USERNAME、WORDPRESS_PASSWORD)。
日本語化はされていません。
そして、おもむろに、Pluginsから、WooCommerceをInstall、Activate。PluginsのページにWelcome to WooCommerceのメッセージと「Run the Setup Wizard」ボタンが表示されているので、クリックします。
基本情報を入力し、Payment画面では、PayPalとstripe、さらにCash on deliveryを有効にしてみます。Shippingはとりあえず適当に、オススメのAutomated TaxesとMailChimpも有効にしておいて、Jetpackは接続できないというメッセージになりましたがそのまま行きます。
チュートリアルに従って商品登録し、「Visit Site」の下の「Visit Shop」をクリックすると、商品が表示され、カートに投入し、カートを見ると購入商品が表示されます。
ただ、この状態ではあまりに見た目が投げやりなので、AppearanceのThemesからStorefront を検索して、Install、Activateします。
「Design your store」という画面が表示されますので、流れに従って入力。多少見た目が整います。「Design your store」が公式のようなので入れてみましたが、なかなかのシンプルさではあります。
https://shimesan.com/2018/03/24/woocommerce-netshop-003/
この辺は参考になりそうです。
試しにもう一つ、THESHOPというテーマを入れてみます。
https://athemes.com/theme/theshop/#
さすがの良い感じ。
とりあえず、こうしておきます。
さらに、今回やりたいのは単一ショップではないので、複数ベンダー対応のプラグイン、「WC Marketplace」を入れます。
そして、ちょっと設定を初めてみましたが、これはなかなか骨が折れそうなので、また改めて。
DockerでMagento環境を構築する
Dockerで、ビジュアルに、Magento環境を構築していきたいと思います。
参考情報 https://qiita.com/kzkiq2nd/items/29f69c156f6f6e2fb215
を入り口として、
https://qiita.com/kzkiq2nd/items/b8162cfc41d13616f861
https://principle-works.jp/blog/how2runm2ondocker-apache/
https://principle-works.jp/blog/how2runm2ondocker-compose/
も参照。
しつつ、いかにビジュアルに構築するかを考えます。
イメージ検索 まずは、Kitematic内で検索してみます。
最初は、一つしかヒットしなかった気がしたのですが、気のせい??
まあまあ、結構な数がヒットします。
Googleで「magento docker」で検索した場合は、bitnami/magentoが先頭でヒットします。
さらに、DevBoxなるものもあるといいます。
どれを使うべきか。
DevBoxが正攻法のようではあります。
https://magento.com/blog/technical/set-your-magento-2-development-environment-faster
が、最初の参考情報によると、ちょっとフルスペックすぎる感じが無きにしも非ず。
かつ、2.3には未対応っぽい。
次は、Pulls 1M+ となっていて、利用者の多そうなこちら。
https://hub.docker.com/r/alexcheng/magento2
解説も丁寧にされているのが好印象。2.3.xとも書いてあるので安心。
こちらにさらに情報あり。
https://microbadger.com/images/alexcheng/magento2
bitnami版も確認。
https://hub.docker.com/r/bitnami/magento
利点として書かれているのは、最新版追跡の速さですね。
こちらにも、いくつかのパターンが置かれています。
https://bitnami.com/stack/magento/containers
ちょと悩むところではあるのですが、ブランド名を信じて、bitnamiにしてみます。
bitnami版magento2のインストール 改めて、Kitematicで「bitnami/magento」で検索し、CREATEボタンを押します。
しばらくダウンロード画面が表示され、追加されたかと思いきや、エラーメッセージ。
Welcome to the Bitnami magento container
Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-magento
Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-magento/issues
ERROR == The MAGENTO_DATABASE_PASSWORD environment variable is empty or not set. This environment variable is required for Magento to be properly installed.
MacにDocker環境をビジュアルに構築する
目的 2018年11月にMagentoが2.3にバージョンアップしたため、その環境を作りたい。
しかし、現在AWSに構築している環境をバージョンアップするのは、素人には難しそう。そもそも、現状が綺麗にできていない気がするので、クリーンインストールすることにする。
そして、今後も複数バージョンをどう取り扱うか問題は出てくると思うので、このWordpressサイト構築にあたって興味を持ったDockerをもう少し突き詰めてみる。
考えること Dockerもコマンド打つだけじゃないでしょ、もっとビジュアルに行こうぜ!と思ったら、思いの外深い。
参考
https://yoshinorin.net/2017/08/30/try-docker-rancher/
まず、Docker for Macにするのか、Docker Toolboxにするのかを考えなければなりません。
一般的には、VirtualBoxが不要であるDocker for Macの方が、早い、ということのようです。
そして、実際のビジュアルツールとして、やはり本命はDocker社純正のKitematicと言うことになるかと思います。
ただ、上記参考サイトにあるように、これは「Docker for WindowsとDocker for Mac」用となるので、AWS等のLinux環境では同一環境にはならないと言うことになります。
もっとも、それは「外側」が異なるという話であり、Dockerで構築される「中身」については同じでしょうから、それは別の話として良いのかなと考え、Kitematicで構築することにしてみます。
なお、第二の選択肢として、Portainer、Rancherも興味深いです。
Kitematicのインストール 手順としては、Docker for Macをインストールし、そうすると、Dockerアイコンが表示されるようになるので、そこからKitematicをインストールするということのようです。
この辺が比較的新し目の情報かと思います。
https://yatteq.com/localdev-docker
で、Docker for Macをダウンロードしに行くわけですが、そこの名前はDocker Desktop (Mac)。分かりにくくないですか??
Dockerのアカウント登録をして、ダウンロードします。518MB、なかなかですね・・・
インストール方法は特筆すべきことはないですが、本家docsでも眺めておけば良いでしょう。
https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac
丁寧な手順はこちらとか。
https://qiita.com/seijimomoto/items/357ac7aa84f98b96021f
最初、Docker アイコンからKitematicをクリックしても反応なく焦りましたが、再度アプリケーションフォルダからDockerをダブルクリックしたら反応してくれました。
ということで、インストールまでは、簡単に行きます。
サイト引っ越し、そして、再引っ越し(Part2)
WordPressサイトを引っ越したものの、なかなか苦労しましたという話の後編。
前編は
サイト引っ越し、そして、再引っ越し(Part1)
WordPressサイトの引っ越し方法 色々あると思いますが、毎回検討するのは、こちらのプラグイン。
All-in-One WP Migration – WordPress
そして、毎回容量オーバーに引っかかっている気が・・・
あまり、検索で引っかからないのですが、その後の作業の中で、以下のような方法もあるのではないか、と思っています。試してませんが、これをまとめておくと次回に役立ちそうな気はしますね。
Jetpack、UpdraftPlus、あと忘れた・・・
phpmyadminのイメージ追加 今回は結局、力業で、DBもダンプ取ってリストア、ファイルは丸ごとwp-content/uploadsを持ってくる。
そのために、是非新サイトのDBもphpmyadminで参照したいということで、イメージを追加します。
これ自体は比較的すんなりいきました。下記を参考にさせていただきました。
https://qiita.com/furu8ma/items/50718efebee20fd24517
/home/wordpress/mariadb/docker-compose.yml
に下記を追加します。
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
– PMA_ARBITRARY=1
– PMA_HOST=db-data
– MYSQL_USER=●●●
– MYSQL_PASSWORD=●●●
– MYSQL_ROOT_PASSWORD=●●●
links:
– mariadb
ports:
– 8080:80
volumes:
– /sessions
networks:
– common_link
PMA_HOSTのdb-dataは、この直前で定義しているデータベースデータのコンテナ名です。
また、8080で公開されるので、ファイアウォールのルールで8080を解放する必要があります。
ファイルの移行 DB移行後、最初はそのままデータをINSERTしてしまったら、最初のページから旧サイトに飛ばされるという事態になり、文字列を変換してからINSERTするように修正。
次にファイルの移行ですが、こちらについては、まずファイル20MB制限があったので(何の話か忘れてしまいましたが)、分割してzipでアップしました。
そして、GCE初期状態ではzipが入っていなかったためインストール。
sudo apt install unzip
なぜだか、ずいぶん画像リンク切れが多発していますが、とりあえずは良しとします。
サーバ停止 とりあえず良しとして、アナリティクスの設定をしていたら、数日後、サイトの検索が利いていないことに気づきました。
おかしいと思い、Dockerのダウン・アップをすると利くようになるので、はて?と思っていたら、しばらくするとまた同じ現象。そして、だんだん間隔が短くなっていき、最後は、SSHが接続できなくなってしまいました。
Webコンソールだからかなと、ここでgloudコマンドツールをインストールすることにします。
しかし、gloudコマンドツールは使えるようになっても、そのSSHはやはり使えません。
Google公式トラブルシューティングということで、
https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh?hl=ja
を試していきます。
「インスタンスをシャットダウンせずに検査する」あたりは、今回の件とは関係なくためになる、GCEの色々な機能の勉強になる手順でしたが、結局デバッグインスタンスにも接続できません。
サイト引っ越し、そして、再引っ越し(Part1)
サイト引っ越しの目的 Lighthouseを知って調査してみると、そういえばこのご時世にHTTPS対応されていない。
また、体感としてページの読み込みが遅い。
サイト構成も、イマイチに感じられてきた。
ということで、引っ越しをすることにしました。
さくらのレンタルサーバは使っているので、それでも良いと思いましたが、新しいことにも挑戦しようということで、引っ越し先を検討したところ、こちらのサイトが面白かったので、これに従いました。
GCPの無料枠でdev.toなみの爆速WordPress環境を構築する 引っ越し手順でのトラブル色々 上記サイトの手順は、非常に良くできているので、基本的には、そのまま従えば大丈夫なのですが、私の環境の問題等で、若干はまったところがありました。
freenom 大した話ではないですが、最初登録した際にエラーになりました。
そういう場合は、Service > My Domainsから確認できる。
プロキシサーバーコンテナを起動(nginx-proxy) 今回の方法では、Docker-composeで、いくつかのDockerコンテナを起動して、それらを連携して動作させます。
大きな手順としては、Dockerインストール、Docker-composeインストール、Dockerネットワーク作成、プロキシサーバーコンテナを起動(nginx-proxy)、と進めていくのですが、最初のコンテナであるnginx-proxyの起動でエラーとなりました。
Creating nginx-proxy … error
・・・
ERROR: for nginx-proxy Cannot start service nginx-proxy: b’driver failed programming external connectivity on endp
oint nginx-proxy (・・・): Error starting userland proxy:
listen tcp 0.0.0.0:80: bind: address already in use’
という感じです。よく読めば、ポート80番がバッティングしているとわかります。
元々、勉強用に色々立ち上げていたGCE環境のため発生した問題で、綺麗な環境であればこれは発生しないと思われます。
これに対して、最初は、/home/wordpress/nginx-proxy/docker-compose.yml を編集して、80:80 → 8088:8088 と変更しました。
これにより、起動するようにはなりました。ただ、その後結局他のエラーが発生し、そもそも新しいサイトを8088で公開するのもありえないので、
sudo service apache2 stop
sudo update-rc.d -f apache2 remove