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 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3

docker 创建的MySQL容器内默认就是Ubuntu吗

file

5年前 评论

请问同一个局域网的电脑访问我电脑上的ip,docker怎么设置

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!