Docker 下安装配置 lnmp 环境

前提:已经成功安装 Docker

创建 mysql 容器#

执行以下命令创建容器#

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=wqg951122 --name woann_mysql mysql:5.6

参数说明

  • -d 让容器在后台运行
  • -p 添加主机到容器的端口映射 (hostPort:containerPort)
  • -e 设置环境变量,这里是设置 mysql 的 root 用户的初始密码 *
  • –name 容器的名字,随便取,但是必须唯一

进入到容器 (其他容器进入方法都是一样的,替换容器名执行命令即可)#

docker exec -ti woann_mysql /bin/bash

参数说明

  • -t 在容器里生产一个伪终端
  • -i 对容器内的标准输入 (STDIN) 进行交互

安装 vim(每个创建的容器都要执行此步骤,后续忽略)#

刚创建的容器没有安装 vim,所以要手动安装,先执行

apt update

再执行

apt-get install vim

安装完毕即可

创建 php 容器#

执行以下命令创建容器#

docker run -d -v /home/wwwroot:/home/wwwroot -p 9000:9000 --link woann_mysql:mysql --name woann_phpfpm php:7.2-fpm

参数说明

  • -d 让容器在后台运行
  • -p 添加主机到容器的端口映射
  • -v 添加目录映射,即主机上的 /home/wwwroot 和容器中 /home/wwwroot 目录是同步的
  • –name 容器的名字
  • –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。
    这里如果不指定–link 参数其实也是可以得,因为容器本身也是有 ip 的且唯一,所以我们也可以直接利用 ip 去访问容器。

    添加 php 测试文件#

    /home/wwwroot 目录下添加测试 php 文件 index.php
    内容:

    <?php
    phpinfo();

    创建 nginx 容器#

    执行以下命令创建容器#

    docker run -d -p 80:80  -v /home/wwwroot:/home/wwwroot --link woann_phpfpm:phpfpm --name woann_nginx nginx

    参数说明:

  • -d 让容器在后台运行
  • -p 添加主机到容器的端口映射
  • -v 添加目录映射,这里最好 nginx 容器的根目录最好写成和 php 容器中根目录一样。但是不一点非要一模一样,如果不一样在配置 nginx 的时候需要注意
  • –name 容器的名字
  • –link 与另外一个容器建立起联系

进入到 nginx 容器修改配置文件#

  • nginx 配置文件目录在 /etc/nginx/ 目录下
  • 主配置文件为 /etc/nginx/nginx.conf
  • 引用配置文件为 /etc/nginx/conf.d/*.conf
  • nginx 默认创建了一个引用配置文件 (/etc/nginx/conf.d/default.conf)
    执行
    vim /etc/nginx/conf.d/default.conf

    添加如下代码,让 nginx 接收到 php 请求时自动转发到 phpfpm 容器

    location ~ \.php$ {
        root           /home/wwwroot;
        fastcgi_pass   phpfpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    测试结果#

    查看刚才创建的所有容器#

    docker ps

    该命令查看所有正在运行的容器,如查看所有,在命令后加 -a
    如下图所示

测试#

用浏览器访问 http://127.0.0.1/index.php, 即可看到 phpinfo 的信息页面。至此 lnmp 搭建完毕。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。