使用Docker Compose构建WordPress环境

关于构成

    • 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

構成文件的内容 de

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:
DB_NAME=wp_dbname
DB_USER=wp_user
DB_PASSWD=wp_passwd
DB_ROOT=wp_root
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或IP地址}进行连接。phpmyadmin应该在8080端口上启动,所以应该可以通过http://{FQDN或IP地址}:8080进行连接。

结束

在myapp目录中,使用docker-compose down命令来停止。
已经挂载到主机上的数据将保留。

bannerAds