前言
最近重装了一下自己的VPS,发现原来的方式搭建一个wordpress还是挺费劲的,需要安装PHP环境、配置php-fpm、安装MySQL等等;然后想到使用docker会不会简单一些,实践下来确实要方便很多。下面记录下
实现
首先安装Docker-ce
详见:https://blog.terrynow.com/2021/12/15/centos-install-latest-docker-ce-simple-steps/
- 安装Docker-compose
因为我们要安装的是wordpress,还需要有mysql环境,升级可能还需要phpmyadmin(可选),所以利用Docker-compose可以达到部署多个docker应用,然后这些应用之前还能互相访问(例如wordpress和phpmyadmin可以访问mysql)
# 安装 docker-compose yum install docker-compose # 查看版本 docker-compose version
- 编写/opt/docker-compose.wordpress.yml
以上路径可以随意,内容如下:
version: '3.3' services: db: image: mysql:5.7 volumes: - /var/lib/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: - /var/www/wordpress/wp-content:/var/www/html/wp-content ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: dbdata: wp-content:
以上把mysql的数据路径,映射到了本机的/var/lib/mysql,并且把wordpress的wp-content的路径,映射到了/var/www/wordpress/wp-content,如果你之前有需要迁移的wordpress,可以把内容放到/var/www/wordpress/wp-content,或者你自己修改docker-compose.wordpress.yml里的路径(:前面的部分)
同样主机的 /var/lib/mysql 下,如果你有待迁移的mysql数据,也可以直接复制过来(当然也可以用mysql的dump工具dump下来再导入进去)
数据库的root密码设置成了somewordpress,wordpress的用户名和密码都是wordpress,可以根据自己的需要修改上面的配置。
https://blog.terrynow.com/2022/01/03/docker-container-port-iptables-firewall-settings/
对外访问的端口我映射成了8000,如果你的wordpress直接非https对外,那么可以直接映射成端口80,我是因为需要再用nginx做一次https访问,nginx配置如下:
location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
如果还需要phpmyadmin,只需要在/opt/docker-compose.wordpress.yml 增加如下:
phpmyadmin: depends_on: - db image: phpmyadmin/phpmyadmin restart: always ports: - '8080:80' environment: PMA_HOST: db MYSQL_ROOT_PASSWORD: somewordpress
- 安装/卸载
# 安装workpress和其他附属服务 docker-compose -f /opt/docker-compose.wordpress.yml up -d # docker ps下看是否两个container都起来了 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9fecbf5a816b wordpress:latest "docker-entrypoint.s…" 27 hours ago Up 18 hours 0.0.0.0:8000->80/tcp, :::8000->80/tcp opt_wordpress_1 e8e0c8f0e5cf mysql:5.7 "docker-entrypoint.s…" 27 hours ago Up 18 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp opt_db_1 # 停止并删除服务(数据路径如果是映射的,不影响数据的) docker-compose -f /opt/docker-compose.wordpress.yml down
- 导入数据(可选)
# 例如把wordpress的数据库导出 mysql -h192.168.1.2 --databases wordpress -uwordpress -p < /path/to/wordpress.sql # 查看docker的mysql的containId docker ps # 导入数据 docker exec -i containId mysql -uroot wordpress < /path/to/wordpress.sql;
- 访问URL
http://ip:8000
以上就是我用docker安装wordpress的过程,比起之前的非docker方式的,省去很多配置,很方便。
如果遇到导入数据后无法上传附件问题,详见:https://blog.terrynow.com/2021/12/19/docker-wordpress-can-not-upload-attach-file-solved/
文章评论