文章目录
- 下载镜像
- 创建数据持久化存放目录
- 创建相关配置文件
- 创建自定义网络
- 启动NGINX容器
- 启动PHP容器
- 启动MYSQL容器
- 测试NMP环境
- 基于NMP容器构建WordPress博客项目
下载镜像
docker pull php:7.0.10-fpm-alpine
docker pull nginx:1.22.0
docker pull mysql:5.7.39
创建数据持久化存放目录
说明:docker的数据持久化是数据不会随着容器的结束而结束,数据持久化分为具名挂载和匿名挂载,本次使用具名挂载,将数据存储在宿主机上并指定挂载宿主机挂载点。
mkdir /data/NMP/{MYSQL,PHP,NGINX,WEB} -p // 创建NGINX、PHP、MYSQL、WEB目录
mkdir /data/NMP/MYSQL/{conf,data} // 创建MYSQL配置目录、数据存储目录
mkdir /data/NMP/MYSQL/logs // 创建MYSQL日志存放目录
chmod 777 /data/NMP/MYSQL/logs/ // 赋予MYSQL日志目录权限
mkdir /data/NMP/NGINX/{conf,logs} // 创建NGINX配置目录、日志存放目录
mkdir /data/NMP/PHP/conf // 创建PHP配置文件存放目录
创建相关配置文件
创建NGINX配置文件让其支持PHP:
说明:“172.66.68.101”是PHP服务器的IP地址(必须指定),“/var/www/html”是PHP服务器存放网页内容的地址,这里需要结合PHP容器内决定。
vim /data/NMP/NGINX/conf/docker.conf // 创建NGINX配置文件
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html;
}
location ~ \.php$ {
root html;
fastcgi_pass 172.66.68.101:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
创建MYSQL配置文件让其开启MYSQL日志:
如果无需记录MYSQL的日志文件,则可以忽略此步骤,忽略的同时在启动容器的时候就可以不用挂载MYSQL日志存放目录。
cat > /data/NMP/MYSQL/conf/docker.cnf << EOF
[mysqld]
log_error=/mysql/mysql.error.log
EOF
创建自定义网络
自定义网络修复了Docker0网桥与容器之间无法用容器名互相ping通的问题,只能使用IP才能ping通,但是我们自定义的网络是可以用IP或容器名互相ping通的,它的好处是将不同的集群使用不同的网络,保证集群是安全和健康的!
创建一个名为“LNMP”的网络名称、采用“brige”网络模式、IP网段“172.66.68.0/24”、网关地址“172.66.68.1”
docker network create --driver bridge --subnet 172.66.68.0/24 --gateway 172.66.68.1 LNMP
启动NGINX容器
命名为“NGINX_1”,IP地址“172.66.68.100”,映射端口“80”。
docker run -d --name=NGINX_1 -p80:80 --net=LNMP --ip=172.66.68.100 \
-v /data/NMP/NGINX/conf/:/etc/nginx/conf.d \
-v /data/NMP/NGINX/logs/:/var/log/nginx \
-v /data/NMP/WEB/:/usr/share/nginx/html nginx:1.22.0
启动PHP容器
命名为“PHP_1”,IP地址“172.66.68.101”。
docker run -d --name=PHP_1 --net=LNMP --ip=172.66.68.101 \
-v /data/NMP/WEB/:/var/www/html/ \
-v /data/NMP/PHP/conf:/usr/local/etc/php/conf.d php:7.0.10-fpm-alpine
启动MYSQL容器
命名为“MYSQL_1”,IP地址“172.66.68.102”,映射端口“3306”。
docker run -d --name=MYSQL_1 -p3306:3306 --net=LNMP --ip=172.66.68.102 \
-v /data/NMP/MYSQL/data/:/var/lib/mysql \
-v /data/NMP/MYSQL/conf/:/etc/mysql/conf.d \
-v /data/NMP/MYSQL/logs/:/mysql/ -e MYSQL_ROOT_PASSWORD=asdzxc mysql:5.7.39
测试NMP环境
创建测试PHP连接:
echo "<?php phpinfo(); ?>" > /data/NMP/WEB/index.php
浏览器访问:http://172.66.66.66/index.php
创建测试连接数据库:
docker exec -it 30d4136b979e /bin/sh // 进入PHP容器“30d4136b979e容器ID”
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories // 修改本地源
docker-php-ext-install mysqli // 安装php扩展支持连接MYSQL
exit // 退出容器
docker restart 30d4136b979e // 重启PHP容器“30d4136b979e容器ID”
vim /data/NMP/PHP/html/sql.php // 创建数据库连接
<?php
$servername = "172.66.68.102";
$username = "root";
$password = "asdzxc";
// 创建连接
$conn = new mysqli($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
浏览器访问:http://172.66.66.66/sql.php
基于NMP容器构建WordPress博客项目
rm -rf /data/NMP/WEB/* // 删除刚测试的文件
wget https://cn.wordpress.org/wordpress-5.0.4-zh_CN.tar.gz // 下载wordpress
tar zxvf wordpress-5.0.4-zh_CN.tar.gz -C /data/NMP/WEB/ // 解压wordpress
cd /data/NMP/WEB/wordpress/ // 进入到项目目录
cp wp-config-sample.php wp-config.php // 复制项目配置文件
vim wp-config.php // 修改项目配置文件(修改以下标红内容)
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'user');
/** MySQL数据库密码 */
define('DB_PASSWORD', '123456');
/** MySQL主机 */
define('DB_HOST', '172.66.68.102');
# a进行插入,修改完成后按Esc,:wq保存退出
配置数据库:进入到MYSQL容器
docker exec -it c03f2e2221a2 /bin/bash // 进入MYSQL容器
mysql -uroot -p
create database wordpress; // 创建数据库
create user 'user'@'%' identified by '123456'; // 创建用户
grant all privileges on wordpress.* to 'user'@'%'; // 用户授权
flush privileges; // 刷新权限
浏览器访问:http://172.66.66.66/wordpress
登录到项目中:
至此部署完成~希望此文档对您有所帮助,祝你工作顺利!!!