用 Docker 部署 WordPress 和 MySQL,四条命令跑起来

WordPress 是开源程序,博客、作品集、企业站、社区都能拿它搭。之前记过用 Docker 部署 MySQL,这次顺着同样的思路把 WordPress 也容器化:不装 PHP、不配 Nginx,整套服务全跑在 Docker 里,四条命令搞定。

拉镜像

WordPress 官方有镜像,不用自己构建:

docker pull wordpress:latest

WordPress 需要 MySQL,两个选择:用宿主机或其他服务器上现成的数据库,或者再拉一个 mysql 镜像让整套都在 Docker 里跑。顺便练 Docker,这里选后者:

docker pull mysql:latest

启动服务

先起数据库再起应用:

docker run -d --privileged=true --name Mysql_Test -v /data/mysql:/var/lib/mysql -e MYSQL_DATABASE=wordpress -e MYSQL_ROOT_PASSWORD=233333  mysql
docker run -d --name WordPress_Test -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_PASSWORD=233333 -p 2020:80 --link Mysql_Test:mysql wordpress

要点:mysql 容器用 -v /data/mysql:/var/lib/mysql 把数据落在宿主机,MYSQL_DATABASE 直接建好 wordpress 库;WordPress 容器用 --link 连到 mysql,宿主机 2020 端口映射到容器 80。

浏览器访问 http://服务器IP:2020/wp-admin/index.php,走一遍“著名的 WordPress 五分钟安装”即可。

解决 MySQL 认证方式问题

新镜像可能连不上库,先把认证插件改成 WordPress 认识的方式。进容器:

docker exec -it Mysql_Test mysql -p

执行:

mysql> use mysql;
mysql> select host, user, plugin from user;
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '233333';
mysql> select host, user, plugin from user;

root 的 plugin 从 caching_sha2_password 改成 mysql_native_password 后,再访问就正常了。

安全提醒

示例里的密码 233333 和裸端口映射只适合测试。真要对外服务,数据库密码换强口令、端口收进反向代理并上 HTTPS,--privileged=true 对 MySQL 镜像并非必需,能去掉就去掉。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容