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();
    }

 



posted @ 2022-06-23 14:49  小猪哥哥  阅读(249)  评论(0编辑  收藏  举报