这里是在windows下进行,原理一样
一.创建自定义网络环境
创建自定义网络环境,因为默认的两个容器之间是无法解析的
docker network create lnmp
docker network ls
默认有三个环境,我们创建了一个
二.创建mysql容器
docker pull mysql
运行mysql容器
docker run -d -p 3326:3306 --restart=always --name lnmp-mysql --net lnmp -v D:\Docker\project\lnmp\mysql\conf:/etc/mysql/conf.d -v D:\Docker\project\lnmp\mysql\data:/var/liv/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
这里通过navicat测试连接成功
使用命令进行与mysql交互
docker exec -it lnmp-mysql /bin/bash
修改my.cnf配置文件
[mysqld]
节点添加下面两行
skip-host-cache
skip-name-resolve
参数解释如下:
skip-host-cache:禁用主机名缓存
skip-name-resolve:禁用主机名解析
防止更换ip后无法识别主机
重启mysql。
登录mysql
更改root密码加密方式,%表示任意地点登录; 其中 xxx 替换成你要设置的密码,设置密码为永不过期
ALTER USER 'root'@'%' IDENTIFIED BY 'xxx' PASSWORD EXPIRE NEVER;
修改密码并指定加密规则为 mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx';
刷新权限
flush privileges;
添加新用户test,修改用户加密方式,为用户设置权限
alter user 'test'@'%' identified by 'xxx' password expire never;
alter user 'test'@'%' identified with mysql_native_password by 'xxx';
grant all on *.* to 'test'@'%' ; #赋给用户所有权限
flush privileges;
这里导入了项目的数据库
使用exit;退出mysql和交互终端
三.创建php-fpm容器(PHP7.4)
docker pull bitnami/php-fpm
运行容器,并挂在目录
docker run -d --name lnmp-php7-fpm -v D:\Docker\project\lnmp\nginx\www:/www bitnami/php-fpm
四.创建nginx容器
docker pull nginx
运行容器,并挂载目录,首先要创建D:\Docker\project\lnmp\nginx\conf\nginx.conf文件,不然windows会认为是目录
docker run -d -p 8082:80 --name lnmp-nginx -v D:\Docker\project\lnmp\nginx\www:/usr/share/nginx/html -v D:\Docker\project\lnmp\nginx\conf\nginx.conf:/etc/nginx/nginx.conf -v D:\Docker\project\lnmp\nginx\conf\conf.d:/etc/nginx/conf.d -v D:\Docker\project\lnmp\nginx\logs:/var/log/nginx --link lnmp-php7-fpm:php nginx
在D:\Docker\project\lnmp\nginx\conf\conf.d增加文件host.conf,并配置如下
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
fastcgi_pass这里的php对应的是之前的lnmp-php7-fpm,端口9000是默认进程端口
重启nginx容器
docker restart lnmp-nginx
在D:\Docker\project\lnmp\nginx\www增加index.php
<?php
echo phpinfo();
?>
浏览器运行127.0.0.1:8082如下
至此,lnmp环境已经搭建完毕