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.

メッセージに従い、Kitematicの「Settings」タブで、MAGENTO_DATABASE_PASSWORDの値を設定し、そのほか、データベース関連の空白になっている欄に入力し、SAVEhttps://github.com/bitnami/bitnami-docker-magento を見ると、MYSQL_CLIENT_・・・の設定は新たなDBを作るための設定のようなので、4項目削除してSAVE。

先に進みますが、今度は、mysql-c INFO Trying to connect to MySQL server で待ち。
そもそも、どういう仕組みで起動しているのだろう(特にDB)、というのがわからなかったため、いったんコンテナ削除。

alexcheng/magento2のインストール

こちらを試してみます。
ダウンロードしてそのまま、この画面。

すげっ。
Step 2: Add a Database は、どうするんだっけ、と思いながら、とりあえずは、ドキュメントに記載されているデフォルト情報を設定してみます。
しかし、「SQLSTATE[HY000] [2002] No such file or directory」エラー
Database Server Hostを127.0.0.1にすると「SQLSTATE[HY000] [2002] Connection refused」になるので、ここの問題っぽい。というか、結局MySQLが動いていないのでは疑惑。
すなわち、Kitematicは、docker-compose upをしている訳ではないのだろう、ということで、最初はコマンドを叩くことにする。ビジュアルじゃないけど仕方ない。
こちらも、Kitematicの画面でコンテナ名の右の×印(stop and remove)で削除。しかし、ふとdocker imagesを叩いてみると、どちらも残っている。
docker ps、docker ps -a では何も出てこないので、docker rmi で削除する。

bitnami版magento2をcompose

では、改めて、bitnami版でやってみます。
ユーザホームに作ってしまいます。

mkdir docker
mkdir docker/magento2
cd docker/magento2/
curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-magento/master/docker-compose.yml > docker-compose.yml

ymlはこのままでも使えそう。

docker-compose up -d

インストールは無事完了
いきなり、ここまで来ます。ひえー。

ただ、ymlはこれではダメです。DB永続化のためにdata volumesにホスト側のディレクトリを指定する必要があります(下に書くなら最初から書いてくれー)。
mkdir mariadb-persistence
mkdir magento-persistence
ここへのパスに書き換え、最後のvolumes指定を削除して、実行。
こんな感じでファイルが作成されます。

無事画面も表示されます。管理画面はuserでログインします。パスワードを確認するために、Kitematicを起動し、magento側(非mariadb側)のSettingsで確認します。

と言う感じで、無事開発環境構築ができました。
長かった!