docker搭建dnmp环境 流程

边学边操作,在菜鸟教程上面docker教程进行学习的。用的是腾讯云的云服务器,系统是CentOS 7.9的。

环境版本:nginx:最新 php:7.2 mysql:5.7

nginx

  1. 命令:mkdir /www/docker
    mkdir /usr/local/nginx-docker/conf/conf.d
    设置主机服务器和挂载的nginx容器路径,并创建主机路径的文件夹
    项目文件夹路径 主机:/www/docker 容器:/usr/share/nginx/html
    配置文件夹路径 主机:/usr/local/nginx-docker/conf/conf.d 容器:/etc/nginx/conf.d

  2. 命令:docker pull nginx:latest
    docker下拉nginx镜像最新(latest)的版本

  3. 通过 docker ps 命令查看是否安装成功:

  4. 在浏览器进行访问,地址为 主机域名或IP:8080,显示Welcome to nginx! 表示安装成功

php

  1. 设置主机服务器和挂载的php容器路径
    项目路径 主机:/www/docker 容器:/var/www/html

  2. 命令:docker pull php:7.2-fpm
    docker下拉php镜像7.2的版本

  3. 命令:docker run --name php-fpm -v /www/docker:/var/www/html -d php:7.2-fpm
    通过php镜像运行容器
    --name : 将容器命名为 php-fpm。
    -v :将主机中项目的路径 /www/docker 挂载到容器的 /var/www/html
    -d :设置容器在在后台一直运行。

  4. 命令:cd /usr/local/nginx-docker/conf/conf.d
    vim php-nginx.conf

    在主机的nginx配置文件夹(/usr/local/nginx-docker/conf/conf.d)
    创建文件*.conf,会直接挂载到容器配置文件夹 (/etc/nginx/conf.d)

文件 php-nginx.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  /var/www/html/$fastcgi_script_name;
            include        fastcgi_params;
      }
    }
  1. 命令:docker run --name php-nginx -p 8081:80 -d
    -v /www/docker:/usr/share/nginx/html:ro
    -v /usr/local/nginx-docker/conf/conf.d:/etc/nginx/conf.d:ro
    --link php-fpm:php nginx
    通过nginx镜像运行容器
    --name :容器名称。
    -p :端口进行映射,将主机 8081 端口映射到容器内部的 80 端口。
    -v :将主机中项目文件夹 (/www/docker) 挂载到容器项目文件夹 (/usr/share/nginx/html)
    将主机中配置文件夹 (/usr/local/nginx-docker/conf/conf.d) 挂载到容器文件夹 (/etc/nginx/conf.d)
    --link : 把 php-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

  2. 通过 docker ps 命令查看是否安装成功:

  3. 在主机项目文件夹(/www/docker)创建一个index.php,测试用的,访问IP:8080/index.php,正常访问,安装成功。

文件 index.php

<?php
    echo phpinfo();
?>

mysql

  1. 命令:docker pull mysql:5.7
    docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    docker下拉mysql镜像5.7的版本
    通过mysql镜像运行容器
    --name : 将容器命名为 mysql-test。
    -p :端口进行映射,将主机 3306 端口映射到容器内部的 3306 端口。
    -e :设置 MySQL 服务 root 用户的密码。

  2. 通过 docker ps 命令查看是否安装成功:

  3. 命令:docker exec -it mysql-test bash
    mysql -h localhost -u root -p
    123456
    进入mysql容器,过 root 和密码 123456 访问 MySQL 服务。

  4. 如果遇到远程无法连接数据库的问题,可以尝试在mysql命令行输入命令:
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容