🌥

DockerでWordPress環境を構築して、データをローカルに保存する

2022/07/05に公開

やりたいこと

  • DockerでWordPress環境を構築
  • wp-contentsとSQLをローカルに保存する

DockerでWordPress環境を構築

まずはdocker-compose.ymlを作成します。
このファイルがWordPressを起動し、データ保存のためのMySQLインスタンスを生成します。

docker-compose.yml
version: '3'

services:
# データベース
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

# WordPress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest # 最新版イメージを指定
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

以下コマンドでイメージを作成実行します。

% docker-compose up -d

wp-contentsとSQLをローカルに保存する

と、チュートリアルなんかだと上記のコードで紹介されてます。
ところがそのままだと各種データがコンテナ内に生成されるので扱いにくいです。

そこで、/wp-contentsとSQLをローカルに保存するように以下のように修正します。

docker-compose.yml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
      - ./db/mysql:/var/lib/mysql  # マウントするローカルディレクトリを指定
     ports: # ポートを指定し、外部から接続させる
       - "3306:3306"
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - ./html:/var/www/html # マウントするローカルディレクトリを指定
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress

# phpmyadminも用意してSQLを触れるようにしてます
   phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    restart: always
    depends_on:
      - db
    ports:
      - 8888:80

volumes:
    db_data:

これで/dbと/html以下にそれぞれ保存されるようになります!(やったー)

最後に

_人人人人人人人人人人人人_
> Docker完全に理解した <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

というレベルなので、引き続き精進します...

Discussion