CentOS 7.9 docker 部署 lnmp(nginx+mysql+php)
1.拉取 php nginx mysql 镜像
docker pull nginx:1.22 docker pull mysql:5.7 docker pull php:7.4-fpm
2.创建目录 nginx mysql配置文件 项目文件目录
mkdir -p /xiaozhu/docker/nginx/conf.d && mkdir /xiaozhu/www && cd /xiaozhu/docker/nginx/conf.d && sudo touch default.conf
mkdir -p /xiaozhu/docker/mysql/data /xiaozhu/docker/mysql/logs /xiaozhu/docker/mysql/conf
www:项目代码存放目录
nginx :nginx 的配置
mysql:mysql的配置
3.启动php容器
docker run --name lnmp-php -d -v /xiaozhu/www:/var/www/html:ro php:7.4-fpm
/xiaozhu/www==》宿主机php文件目录
/var/www/html:ro==》php容器php文件目录
4.编辑nginx的配置文件
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass lnmp-php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; include fastcgi_params; } }
lnmp-php:9000==》php服务9000端口
/var/www/html/==》php文件存储路径
5.启动nginx容器
docker run --name lnmp-nginx -p 32801:80 -d -v /xiaozhu/www:/usr/share/nginx/html:ro -v /xiaozhu/docker/nginx/conf.d:/etc/nginx/conf.d:ro --link lnmp-php:lnmp-php nginx:1.22
docker run --name lnmp-nginx -p 32801:80 -d -v /xiaozhu/www:/usr/share/nginx/html:ro -v /xiaozhu/docker/nginx/conf.d:/etc/nginx/conf.d:ro nginx:1.22
-v==》宿主机与容器文件映射
32801==》宿主机端口
80==》nginx 容器端口
/xiaozhu/www==》宿主机nginx文件目录
/usr/share/nginx/html:ro nginx==》 容器的nginx文件目录 ro:只读
/xiaozhu/docker/nginx/conf.d ==》宿主机nginx配置文件
/etc/nginx/conf.d:ro==》nginx容器内nginx配置文件
--link lnmp-php:lnmp-php==》把 lnmp-php的网络并入 nginx
6.把nginx和php两个容器通过网卡连接起来:nginx支持php,使用--link 也是可以的
docker network create --driver bridge lnmp #新建一个桥接网卡,名为lnmp docker network connect lnmp lnmp-php #php容器连接网卡lnmp docker network connect lnmp lnmp-nginx #nginx容器连接网卡lnmp
docker network ls #查看网卡列表
docker network inspect lnmp #查看网卡lnmp详情
7.重启nginx容器,在 /xiaozhu/www/ 下新index.html index.php 在浏览器通过ip加端口访问 XXXX:32801:80
docker restart lnmp-nginx
8.启动mysql容器
docker run -p 32802:3306 --name lnmp-mysql -v /xiaozhu/docker/mysql/conf:/etc/mysql -v /xiaozhu/docker/mysql/logs:/logs -v /xiaozhu/docker/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d --link lnmp-php mysql:5.7
docker network connect lnmp lnmp-mysql #mysql容器连接网卡lnmp
9.进入php容器下载mysql pdo扩展
docker exec -it lnmp-php bash #进入php容器
php -m #查看php已安装的扩展
docker-php-ext-install pdo_mysql #下载mysql pdo 扩展
10.设置mysql 远程连接,密码
docker exec -it lnmp-mysql bash
mysql -u root -p
use mysql
select host,user from user;
alert user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
flush privileges;
10.在项目目录新建 mysql.php 连接测试
<?php $servername = "lnmp-mysql"; $username = "root"; $password = "root"; $dbname = "xiaozhu"; try { $conn = new PDO("mysql:host=$servername;", $username, $password); //$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); echo "连接成功"; }catch(PDOException $e){ echo $e->getMessage(); }