我们使用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的安装界面啦!!