Dockerでこのサイトを構築する:wordpress, mysql, phpmyadmin, 3つのコンテナで運用、ついでにdockeruiも動かしとく

まず、Ubuntu20.04にDockerとdocker-composeをインストールする。

sudo apt-get update # update packege list
sudo mkdir -p /etc/apt/keyrings # make GPG key dir
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # get docker GPG key
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # add packege list of docker
sudo apt-get update # update packege list agein
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin # install docker, docker-compose
sudo usermod -aG docker $USER # add super user group docker user
su - ${USER} # make user
docker -v # view docker version

これでDockerのバージョンが表示されればOK
そしたら用意するコンテナをYAMLに記載します。

mkdir docker-compose
cd docker-compose
vi docke-compose.yml
version: '3'
services:
  wordpress:
    image: wordpress
    container_name: plusload-wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: ********
    volumes:
      - ./public_html/:/var/www/html # wordpressの永続化
  mysql:
    image: mysql:5.7
    container_name: plusload-mysql
    restart: always
    environment:
      MYSQL_USER: ******
      MYSQL_ROOT_PASSWORD: *******
    volumes:
      - data-volume:/var/lib/mysql # mysqlの永続化

  phpmyadmin:
    image: phpmyadmin
    container_name: plusload-phpmyadmin
    restart: always
    ports:
      - 8888:80
    environment:
      - PMA_ARBITRARY=1

volumes:
  data-volume:
:wq

dockerコンテナなのでrunして何かトラブルがあってstopするとデータが消えてしまうのでvolumesでマウント永続化すると再起動後もデータは残っている
※mysqlはdocker volumeでマウントしているが、wordpressは/home/user/docker-compose内の/public_htmlに作成してマウントしている
なのでwordpressディレクトリ内にwordpressが使用しないプログラムやディレクトリを入れる場合はこの中にアップする
※phpmyadmin, webminは消失しても問題ないのでvolumesでマウントしない

でコンテナを起動

docker-compose up -d

これで起動するのでまず、mysqlコンテナに入りwordpressというDBを作成する

docker container exec -it plusload-mysql bash
bash-4.2# mysql -u ***user*** -p****pass****
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.44 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)

作ったらmysqlコンテナから抜けてwodpressコンテナに入る

docker container exec -it plusload-wordpress bash

でもそのままではviエディタが使えないのでupdateしてinstallする

apt update
apt install vim -y

これでviエディタが使えるのでwp-config.phpを編集する

vi wp-config.php
*
define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress') );

/** Database username */
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', '***user***') );

/** Database password */
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', '***pass***') );

これでlocalhost:8080にアクセスするとwordpressの初期化ページが表示される
localhost:8888にアクセスするとphpmyadminが表示されるのでコンテナ名のDBでmysqlアカウントでログインする
localhost:10000にアクセスするとwebminが表示されるのでadminと設定したパスワードでログインする

サイトの移行などでAll-in-One WP Migrationプラグインを使用していてサイズが大きい場合はwordpressコンテナの.htaccessに以下を書き加える事で200MBまでのデータの移行が可能

php_value upload_max_filesize 200M
php_value post_max_size 200M
php_value memory_limit 512M
php_value max_execution_time 600
php_value max_input_time 600

また、未使用のvolume何かが残存して重くなっちゃうと困るので未使用のvolumeは削除しておく

docker volume prune
WARNING! This will remove anonymous local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
69fa4cfccf245eab3f2b37cfc6d4e30ddd2adb3eb41addd71bcd46d8e36898af
934d3d7ebac1f07579d2bed96879e10f3bf26d53d9b06e4dd5d2838b83f9e66e
a28836400e24de9ccae7a14d9c028b1bdce21a71c603c1142bfddd99adc4723c
fe141f11b36407fd4a7847bd9c89e667879bea1555ab8bb28edaf7ec5ca4d15d
3cc3939adb74459155e84944504504f82451b027b101b7c9a09addb185cfc25f
bf0f35973dcd45173fb2d166873399d26155733a7b3582d9a8a9a35e5be392d7
fad7f8294d6678bed1403f817c745410e761d95dba812884db974cba394d55fe

Total reclaimed space: 1.06GB

docker volume ls
DRIVER    VOLUME NAME
local     docker-compose_data-volume

1.06GBもあった。

で、今のDBをバックアップする

mysqldump --single-transaction -u root -p my_db > ./my_db.dump

dumpファイルをwinscpなどで現サーバからDLして、新サーバのpublic_htmlの中にコピーして、wodpressコンテナに入ってそこからmysqlにリストア

docker container exec -it plusload-wordpress bash
mysql -h plusload-mysql -u root -p my_db < my.dump

ついでにdockerui(dockerの見える化)もインストールしておく

docker pull kevan/dockerui
docker run -d -p 9000:9000 --name plusload-dockerui -v /var/run/docker.sock:/var/run/docker.sock kevan/dockerui

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)