「広告」

dockerで、WordPress環境を簡単アップグレード

「広告」
記事内に広告が含まれています。
「広告」

オンプレの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によるアプリケーション実行環境構築

タイトルとURLをコピーしました