0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker-composeを使ってWordPress環境を構築する

Last updated at Posted at 2022-08-24

構成について

  • wordpressコンテナは、Node.jsを入れられるようにdockerfileからimageをインストールするようにした。
  • DBの接続情報は、.envファイルに記述して外部ファイル化させた。
  • プラグインとテーマファイルはホスト側からもいじれるように、wp-contentディレクトリをbindマウントさせた。
  • DBをホスト側からいじりたい場面もないと思うのでvolumeマウントさせた。
  • MySQLはバージョン5.7じゃないとうまく動かないらしいので、バージョン指定。
  • その他のイメージファイルやNode.jsのバージョンも本当は固定した方がいいんでしょうけど、今回はしない。

以下の構成で組んだ。

myapp/
  ├ docker/
  | └ wordpress/
  |   └ dockerfile
  ├ wordpress/
  |  └ wp-content/    # 自動生成
  ├ .env
  └ docker-compose.yml

構成ファイルの中身

docker-compose.yml
version: '3.8'

services:
  db:
    image: mysql:5.7
    container_name: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT}
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWD}
    volumes:
      - type: volume
        source: mysql_vol
        target: /db:/var/lib/mysql
    networks:
      wp_network:
        ipv4_address: 172.20.0.2

  web:
    build: ./docker/wordpress
    container_name: wordpress
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: ${DB_USER}
      WORDPRESS_DB_PASSWORD: ${DB_PASSWD}
      WORDPRESS_DB_NAME: ${DB_NAME}
    restart: always
    depends_on:
      - db
    ports:
      - "80:80"
    volumes:
      - ./wordpress/wp-content:/var/www/html/wp-content/
    networks:
      wp_network:
        ipv4_address: 172.20.0.3
  
  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin
    restart: always
    depends_on:
      - db
    ports:
      - 8080:80
    networks:
      wp_network:
        ipv4_address: 172.20.0.4

networks:
  default:
    name: bridge
  wp_network:
    name: wp_network
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/24

volumes:
  mysql_vol:
.env
DB_NAME=wp_dbname
DB_USER=wp_user
DB_PASSWD=wp_passwd
DB_ROOT=wp_root
./docker/wordpress/dockerfile
FROM wordpress:latest
RUN apt-get update -y && apt-get upgrade -y

WORKDIR /tmp
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt install -y nodejs
RUN npm install -g browser-sync

WORKDIR /var/www/html

起動

myappディレクトリで、docker-compose up -dで起動。
WordPressには、80番ポートで立ち上げているので、http://{FQDN or IPアドレス}で接続できるはず。
phpmyadminには、8080番ポートで立ち上げてるので、http://{FQDN or IPアドレス}:8080で接続できるはず。

終了

myappディレクトリで、docker-compose downで終了。
ホスト側にマウントさせた情報は残ります。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?