dockerでalpineなwodpress環境を作ってみた

軽量コンテナalpineベースでWordPressを動かすまで

ローカルにコンテンツを置く場所を確保する

mkdir -p /data/sites/mysite/mysql

実行コマンドを作っておく

linkはもう使われなくなってて、nameで指定した文字がコンテナ内でユニークなホスト名として名前解決してくれて通信できるようになる。但し、コンテナ同士が通信できるようにプライベートなネットワークを作っておく必要がある。

プライベートなネットワークをmynetworkとする。

vi net.sh
--- 
#!/bin/sh

sudo docker network create mynetwork
---

データベースはmysqlを使う。何度も起動し直すことも想定してお掃除するスクリプトを入れちゃってますが、恒久的に残したい場合はrm と chownは削除しておいてください。

mysql.sh
---
#!/bin/sh

sudo rm -rf /data/sites/mysite/mysql/*
sudo chown -R 1000:101 /data/sites/mysite/mysql

sudo docker run --rm -d -P \
  --name mysql \
  --net mynetwork \
  -h mysql \
  -v /data/sites/mysites/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=mysql \
  -e DATADIR=/var/lib/mysql \
  tarzan79/alpine-mysql
---

最後にワードプレスのコンテナ。wordpressが入ってなかったりします。。。

wordpress.sh
---
#!/bin/sh

sudo docker run --rm -d -P \
  --name wordpress \
  --net mynetwork \
  -h wordpress \
  -e VIRTUAL_HOST=mysite \
  -v /data/sites/mysite:/DATA \
  -p 1080:80 \
  etopian/alpine-php-wordpress
---
※ https://github.com/etopian/alpine-php-wordpress

作ったshellを実行します。まずnet.shを最初に実行します。そうすることで、コンテナ間の通信ができるようになります。

chmod +x net.sh mysql.sh wordpress.sh
sudo net.sh
sudo docker network list
sudo mysql.sh
sudo wordpress.sh
sudo docker ps -a

起動したら、wordpressのコンテナに入って、DB設定をします。

sudo docker exec -it wordpress /bin/ash

早速ここで、別のコンテナmysqlへrootで接続します。パスワードは環境変数で定義したMYSQL_ROOT_PASSWORD=の値を入力します。

mysql -h mysql -p

mysqlに接続できたら、wordpress用のデータベースを作成して、そのDBへwordpressコンテナのwordpressアカウントから接続できるようにします。

create database wordpress;
use wordpress
grant ALL PRIVILEGES ON *.* TO mysql@wordpress.mynetwork IDENTIFIED BY 'mysql' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

作ったDBへwordpress用アカウントで接続できるか確認します。

mysql -h mysql -u mysql wordpress -p

ブラウザでアクセスすると、Wordpressの初期設定画面が出てきます。

http://localhost:1080/