我们使用docker搭建Wordpress系统,实操一下docker。

安装前提条件

  • 已经安装docker,并启动docker进程
  • 熟悉docker命令

实操

1、 新建一个网络环境(非必须,仅仅演示怎么自定义网络)

docker network create --subnet 10.10.10.0/24 my-network ##创建自定义网络
docker network ls ## 查看docker网络
docker network inspect my-network ## 查看自定义网络的详细信息

2、部署MYSQL

docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=root -v /var/lib/mysql:/var/lib/mysql --network my-network --ip 10.10.10.1 mysql:5.7.30
  • docker run 创建并启动容器
  • -d 以后台方式运行(damon)
  • –name 自定义了容器名
  • -e 定义容器内系统环境变量(这里第一次启动mysql,需要指定密码,不然会报错)
  • -v 挂载本地文件到容器内
  • --network 指定使用自定义网络(不指定就是默认default)
  • –ip 指定使用IP地址
  • mysql:5.7.30 为镜像名(本地没有会自动下载)
  • 登录mysql创建wordpress数据库名、数据库的用户(这里我就省略了)

3、 部署带有wordpress代码的php环境

docker run --name my-wordpress --network my-network --ip 10.10.10.2 --link my-mysql -d wordpress:5.4.2-php7.3-fpm-alpine
  • 说明:--link 其实就是在容器的hosts中增加一条域名解析记录:10.10.10.1 my-mysql;则在my-wordpress的容器中配置mysql链接时,可以使用my-mysql这个名称而不用写IP地址,这样随便my-mysql容器的IP地址怎么变化,只要容器名字不变,wordpress中mysql的配置就无需修改。

4、部署nginx

docker run -d  --name my-nginx -p 80:80 -p 443:443 -v /data/nginx:/etc/nginx/conf.d --volumes-from my-wordpress --link my-wordpress --network my-network --ip 10.10.10.3  nginx:latest 
  • 说明:
  • -p 映射主机端口至容器的端口,这样用本机的80或者443(如果nginx配置https 443端口)端口就能访问wordpress
  • --volumes-from my-wordpress 将wordpress磁盘共享给my-nginx,因为nginx中没有wordpress的代码,共享后那么一些css、js、图片文件nginx中就可以直接使用了(启动后可以进入nginx容器内查看/var/www/html下是否有wordpress的代码)。
  • 这里需要注意下,因为wordpress的镜像中,wordress源码文件的属组是www-data;nginx镜像中没有该用户和用户组,nginx访问文件可能有权限问题;我们可以手动创建一个相同UID、GID的用户,比如web用户,nginx启动时就用该用户,则文件权限问题得到解决。

default.conf

server {
listen 80;

charset utf-8;
root /var/www/html;
set APP_PATH  /var/www/html;
location ~ \.php$ {
    fastcgi_intercept_errors on;
    fastcgi_index index.php;
    fastcgi_pass  my-wordpress:9000; ## 注意这里因为创建nginx容器时用了--link,可以用my-wordpress的名字,而不需要写IP。
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    fastcgi_param PATH_INFO       $fastcgi_path_info;
    fastcgi_param HTTPS           $https;
    fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT   $APP_PATH;
    fastcgi_param SCRIPT_FILENAME $APP_PATH$fastcgi_script_name;
}
}
  • 这样一套wordpress的环境就搭建完成了,在浏览器中输入http://ip 就能访问wordpress的安装界面啦!!