オンプレのWordPress環境、手軽にDBのバージョンをアップしてみたい!
など、dockerの特性を生かしてDBのバージョンをアップ!
その実際を!
■WordPress + MySQL 5.6の環境で、元のWordPress環境を作る
実験のため、古い5.6で作成します。
# cat docker-compose.yml version: "2" services: wordpress: image: wordpress:latest ports: - "80:80" depends_on: - db environment: WORDPRESS_DB_HOST: "db:3306" networks: - flat-network env_file: .env volumes: - /home/wp/wp-content:/var/www/html/wp-content db: image: mysql:5.6 volumes: - "/home/wp/db-data:/var/lib/mysql" - ./db-data/test.db:/docker-entrypoint-initdb.d/install_wordpress.sql networks: - flat-network env_file: .env networks: flat-network:
↑image: mysql:5.6
で、「5.6」のバージョンを指定しています。
「/home/wp/wp-content:/var/www/html/wp-content」
の指定では、テーマファイルを外出ししています。
/home/wp/wp-wp-content
以下に置きます。
これは、dockerをdownしても、テーマファイルは、削除されません。
「データの永続化」です。
DBも
「/home/wp/db-data:/var/lib/mysql」
として、永続化します。
./db-data/test.db:/docker-entrypoint-initdb.d/install_wordpress.sql
では、WordPressのデータを指定しています。
元のWordPressからdumpをとった、SQLデータです。
# /usr/local/bin/docker-compose up -d Creating network "wp_flat-network" with the default driver Pulling db (mysql:5.6)... 5.6: Pulling from library/mysql 683abbb4ea60: Pull complete 0550d17aeefa: Pull complete 7e26605ddd77: Pull complete 9882737bd15f: Pull complete 999c06ab75f6: Pull complete c332b2a4ecf0: Pull complete 2031bd1157f4: Pull complete 9a57e5c3f9d3: Pull complete 83821c90c826: Pull complete 9fe23be22c90: Pull complete e5b2e7de4325: Pull complete Digest: sha256:0267b9b43034ed630e94f846ca825140994166c6c7d39d43d4dbe8d1404e1129 Status: Downloaded newer image for mysql:5.6 Pulling wordpress (wordpress:latest)... latest: Pulling from library/wordpress 683abbb4ea60: Already exists 7573949a21a7: Pull complete 7a95c20cda7b: Pull complete 803353b04268: Pull complete 07212a2089a5: Pull complete f815f63d38a4: Pull complete c2586bd0b43c: Pull complete 952eb484037e: Pull complete cc5cbbbef49f: Pull complete 400874eeb800: Pull complete e7bba14e289c: Pull complete 019a3f5a16dc: Pull complete e4a37c4529f0: Pull complete 9f458814f77a: Pull complete b51e043526af: Pull complete d8601f48de50: Pull complete 34462148bbf1: Pull complete ac8a00129d91: Pull complete d17308354c82: Pull complete f870304ee020: Pull complete Digest: sha256:7122e8924cfb8bc1f4bc0d5a01f6df7d8186f5661c385511079c60c4feca5019 Status: Downloaded newer image for wordpress:latest Creating wp_db_1 ... done Creating wp_wordpress_1 ... done
↑docker-composeコマンドで、サービスをアップします。
# /usr/local/bin/docker-compose ps Name Command State Ports ------------------------------------------------------------------------------ wp_db_1 docker-entrypoint.sh mysqld Up 3306/tcp wp_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:80->80/tcp
↑80番ポートで、サービスが起動しました。
# pwd /home/wp/wp-content # ls -al total 20 drwxr-xr-x 4 33 tape 4096 May 18 04:00 . drwxr-xr-x 4 root root 4096 Jun 30 21:33 .. -rw-r--r-- 1 33 tape 28 Jan 9 2012 index.php drwxr-xr-x 3 33 tape 4096 May 18 04:00 plugins drwxr-xr-x 5 33 tape 4096 May 18 04:00 themes # ls -al themes/ total 28 drwxr-xr-x 6 33 tape 4096 Jun 30 21:41 . drwxr-xr-x 4 33 tape 4096 May 18 04:00 .. -rw-r--r-- 1 33 tape 28 Jun 6 2014 index.php drwxr-xr-x 6 7141 tape 4096 Jan 27 18:56 mytheme drwxr-xr-x 6 33 tape 4096 May 18 04:00 twentyfifteen drwxr-xr-x 5 33 tape 4096 May 18 04:00 twentyseventeen drwxr-xr-x 7 33 tape 4096 May 18 04:00 twentysixte
↑「mytheme」フォルダを元サーバーからテーマデータをコピーします。
# pwd /home/wp/wp-content # ls -al total 24 drwxr-xr-x 5 33 tape 4096 Jun 30 21:43 . drwxr-xr-x 4 root root 4096 Jun 30 21:33 .. -rw-r--r-- 1 33 tape 28 Jan 9 2012 index.php drwxr-xr-x 3 33 tape 4096 May 18 04:00 plugins drwxr-xr-x 6 33 tape 4096 Jun 30 21:41 themes drwxrwxrwx 4 root root 4096 Jan 14 17:46 uploads
↑画像ファイルなどが入った「uploads」フォルダをコピーします。
# pwd /var/lib/docker/volumes/3cda65797c70b6c16b1225a72d929fc32942c122da8f5c425b849704e67e3c5c/_data # vi wp-config.php define('WP_HOME','http://xxx.xxx.xxx.xxx'); define('WP_SITEURL','http://xxx.xxx.xxx.xxx');
↑ドメイン名の変更を行います。
詳しくは、WordPressのドメイン変更は「Database Search and Replace Script in PHP 」!(2018年版)のページに。
↑ログイン成功!
■WordPress + MySQL 5.7と、MySQLをバージョンアップ
# docker-compose stop # docker-compose ps Name Command State Ports ------------------------------------------------------------------ wp_db_1 docker-entrypoint.sh mysqld Exit 0 wp_wordpress_1 docker-entrypoint.sh apach ... Exit 0 # docker-compose down Removing wp_wordpress_1 ... done Removing wp_db_1 ... done Removing network wp_flat-network # docker-compose ps Name Command State Ports ------------------------------ # docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest 1d3cc82944da 2 days ago 408MB mysql 5.6 97fdbdd65c6a 3 days ago 256MB
↑dockerを落とします。
version: "2" services: wordpress: image: wordpress:latest ports: - "80:80" depends_on: - db environment: WORDPRESS_DB_HOST: "db:3306" networks: - flat-network env_file: .env volumes: - /home/wp/wp-content:/var/www/html/wp-content db: image: mysql:5.7 volumes: - "/home/wp/db-data:/var/lib/mysql" networks: - flat-network env_file: .env networks: flat-network:
↑新しいymlファイルを用意します。
image: mysql:5.7
と、5.7を指定します。
– ./db-data/test.db:/docker-entrypoint-initdb.d/install_wordpress.sql
の行は削除します。
# /usr/local/bin/docker-compose up -d Creating network "wp02_flat-network" with the default driver Pulling db (mysql:5.7)... 5.7: Pulling from library/mysql 683abbb4ea60: Already exists 0550d17aeefa: Already exists 7e26605ddd77: Already exists 9882737bd15f: Already exists 999c06ab75f6: Already exists c71d695f9937: Pull complete c38f847c1491: Pull complete 74f9c61f40bf: Pull complete 30b252a90a12: Pull complete 9f92ebb7da55: Pull complete 90303981d276: Pull complete Digest: sha256:1203dfba2600f140b74e375a354b1b801fa1b32d6f80fdee5f155d1e9f38c841 Status: Downloaded newer image for mysql:5.7 Creating wp02_db_1 ... done Creating wp02_wordpress_1 ... done # docker-compose ps Name Command State Ports ------------------------------------------------------------------------------ wp02_db_1 docker-entrypoint.sh mysqld Up 3306/tcp wp02_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:80->80/tcp
↑新しい、WordPressが起動しました。
# pwd /var/lib/docker/volumes/b4aa94c97e6de6801a2482a324c3f724d8d768baeb8e3b4a27dc883b64b2083f/_data # vi wp-config.php ------------------------------------------------------------------------------ define('WP_HOME','http://xxx.xxx.xxx.xxx'); define('WP_SITEURL','http://xxx.xxx.xxx.xxx');
↑コンテナのボリュームが変わったので、再びwp-configを書き換えます。
↑MySQL 5.7で、起動成功!
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest 1d3cc82944da 2 days ago 408MB mysql 5.6 97fdbdd65c6a 3 days ago 256MB mysql 5.7 66bc0f66b7af 3 days ago 372MB # docker rmi 97fdbdd65c6a Untagged: mysql:5.6 Untagged: mysql@sha256:0267b9b43034ed630e94f846ca825140994166c6c7d39d43d4dbe8d1404e1129 Deleted: sha256:97fdbdd65c6aa3df941925dad239bce330bfcaa9af753239e3807ce1bb0ab3cb Deleted: sha256:ef79e7e1a2186ec3a54cd7bf8bad7a0b8dfdfaf699d59b940ac9d0bbf4d8d4a4 Deleted: sha256:e1c48b7946d4f22ba1509728a507118e9f24ff2519d907864f65cbae4228fb07 Deleted: sha256:eb278ac384807d494fc6a83b0b4b6fab739d880b7d3627ce9890f91387779cd3 Deleted: sha256:38df88842b7d77a63397b7746898be16bad143c933c279eed172aac5192df662 Deleted: sha256:445fa30ddc2f0fa005d679f3e8bdf36710b7fccd1d4b1a6d54020d3c7c8a26d8 Deleted: sha256:39f176ca5d887f0a3efeda4249a98c4635a3e24e1bcea825804ac3574c18f5b7
↑5.6のmysql のdocker を消しても大丈夫
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest 1d3cc82944da 2 days ago 408MB mysql 5.7 66bc0f66b7af 3 days ago 372MB # docker rmi 66bc0f66b7af Error response from daemon: conflict: unable to delete 66bc0f66b7af (cannot be forced) - image is being used by running container 737c5a39b78f
↑5.7を消そうとしても、起動中なので、消せません。
これで、wordpress + MySQL5.7への移行ができました。
結論
dockerは、仮想化技術の次に「標準的に」使われる技術!
もう、バージョンアップの事は気にすることなく、コンテンツ作成に集中できます!
参考書
こちらで勉強しました!
ゼロからはじめる Dockerによるアプリケーション実行環境構築