使用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命令来停止。
已经挂载到主机上的数据将保留。