使用 Docker 部署 WordPress

本文记录了使用 docker, mysql, nginx 部署 wordpress 的基本流程,供读者参考。遇到问题欢迎留言交流~

1 Docker 安装 & 配置

修改 docker 的源

  1. vim /etc/docker/daemon.json
  2. 写入 下方代码块 (code block #1) 的内容(网易、中科大源)
  3. 重启 docker & daemon, systemctl daemon-reload systemctl restart docker
# code block 1
{
    "registry-mirrors":[
                        "https://hub-mirror.c.163.com/",
                        "https://docker.mirrors.ustc.edu.cn/"
                        ]
}

使用普通用户 拉取相关镜像

  1. docker pull mysql
  2. docker pull wordpress
  3. 如果出现无权限的情况,先通过 root 赋权 sudo usermod -a -G docker <target_user>

2 Mysql 配置

创建并启动 mysql 容器

以下 “[]” 区域表示根据情况自行修改

docker run --name [mysql-name] -e MYSQL_ROOT_PASSWORD=[password] -d mysql:latest

数据库 & wordpress 用户创建

  1. 通过 docker ps 查看 mysql 容器的 container id。 image #1
  2. 进入 mysql 容器进行操作 docker exec -it [container id] /bin/bash
  3. 进入 mysql 的 cli,mysql -u root -p 输入密码 [password]
  4. 通过 CLI 创建 wordpress 所需要的账户,以及数据库。 code block #2
Image #1: docker ps
# code block 2
> CREATE DATABASE [wordpress];
> create user '[wordpress_user]'@'%' identified by '[password_wordpress]';
> GRANT ALL PRIVILEGES ON [wordpress].* TO "[wordpress_user]"@"%";
> flush PRIVILEGES;
> exit

3 WordPress 配置

创建并启动 wordpress 容器:

以下 “[]” 区域表示根据情况自行修改,但mysql部分需与上方对应

docker run --name [wordpress-name] --link [mysql-name]:[mysql-domain] -p [port]:80 -d wordpress

将此前运行的mysql容器,与wordpress容器链接,在 wordpress 容器中可通过 [mysql-domain] 来访问数据库。

配置&初始化 wordpress 站点:

通过端口转发 (vscode) 将服务器内的 [port] 转出来到本地,通过本地的端口访问,已经可以进入站点。通过指引即可完成 WordPress 站点配置,下图 (Image #2) 中前3项分别为Mysql中 [wordpress], [wordpress_user], [password_wordpress],第4项为docker link 时候的 [mysql-domain]

Image #2: WordPress 初始化

4 Nginx 配置

至此,wordpress 和 mysql 已经完成配置,并且将 wordpress 容器的80端口对外映射到宿主机的[port] ,配置好服务器的安全组后,外部已经可以通过ip: [port] 的方式通过外网访问站点了。但是我们如果我们希望再通过域名访问博客,还需要通过 nginx 再进行一次转发,那么需要在 nginx.conf 中进行如 code block 3 的配置:

# code block 3
server {
    listen      80;
    server_name yourdomain].com;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://[宿主机ip]:[port]$request_uri;
        proxy_redirect off;
    }
}

此前配置的时候没有增加这些 header 的设置,导致通过域名访问wordpress时无法加载静态文件(路径不正确)。完成上述的配置后通过 ./nginx -s reload 重启 nginx,然后就可以通过域名访问wordpress了。最后再从仪表盘中修改站点的url (Image #3)。

Image #3: Url 配置

分享至:

发表回复