使用docker安装WordPress

使用docker安装WordPress

手动编辑于2022/03/26,内容可能会发生更改或出错,但可以参考思路

WordPress安装后需要连接外部数据库,因此需要安装好mysql

安装好docker环境

sudo apt install docker docker-compose # ubuntu,debian
sudo pacman -S docker docker-compose # archlinux,manjaro
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun  # centos 使用官网脚本安装,需要su root

如果已有portainer

使用portainer安装mysql和wordpress

  1. 登录portainer面板
  2. 选择App Templates
  3. 分别添加mysql和wordpress容器
  4. 然后加入同一网络即可

不建议直接添加wordpress,因为默认会创建新的volumns和密码,

mysql

docker安装mysql(已有mysql数据库可以跳过)

sudo docker pull mysql:latest # 拉取最新镜像
# 创建一个新的mysql容器,名称是mysql
sudo docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql 

配置mysql

sudo docker ps # 找到mysql容器到ID,我的为fa68484f82bd
sudo docker exec fa68 -it /bin/bash # 进入容器bash

# 以下为mysql容器内的bash环境
(bash)
mysql # 输入密码连接到mysql

# 以下进入mysql操作环境
(bash)(mysql)  
	create database wordpress;

# 有需要可以对数据库创建用户,增加权限,更改密码

创建docker网络

sudo docker network create tencloud # 创建一个tencloud网络
sudo docker network connect tencloud mysql # 将mysql加入tencloud网络
sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql # 获得mysql容器ip地址

我的为mysql容器IP为172.19.0.6,后文中将用到

WordPress

docker安装wordpress

sudo docker pull wordpress
sudo docker run -it --name wordpress -e WORDPRESS_DB_HOST=172.19.0.6:3306 -e WORDPRESS_DB_USESR=root -e WORDPRESS_DB_PASSWORD=123456 -p 8080:80 -d wordpress
sudo docker network connect tencloud wordpress # 将wordpress加入tencloud网络

使用浏览器打开服务器的IP地址,输入

数据库名称:wordpress
用户名:root
密码:123456
数据库主机:172.19.0.6
表前缀:wp_ # 默认值不管

提交后,显示连接成功!

密码正确但无法登录

可能是mysql wordpress数据库/wp_user表中,user_pass加密方式不是MD5
外部连接到mysql,不需要登录容器

mysql -u root -p -h 172.19.0.6
(mysql)
	use wordpress;
	select user_login,user_pass from wp_users; # 查看自己的用户名
	update wp_users set user_pass=MD5('<新密码>') where user_login=<你的用户名>;

重新刷新页面即可登录

https证书配置

配置完ssl证书后,wordpress登录不上
打开网站根目录\wp-config.php文件

sudo docker exec -it <wordpress容器ID> /bin/bash

echo -e "$_SERVER['HTTPS'] = 'on';\ndefine('FORCE_SSL_LOGIN', true);\ndefine('FORCE_SSL_ADMIN', true);" >> /var/www/html/wp-config.php 

或者保险起见,可以手动添加echo导入到内容
但容器内一般没有文本编辑器,需要使用包管理器安装如

apt update
apt install vim
vim ./wp-config.php