用 docker 搭建 lnmp 环境

一、phpdocker 镜像网站

phpdocker网站
填写项目的名称(项目的名称要和你本地的一致),选择框架,nginx 端口
file
选择 php 版本,我这里选的是 php7.1.x 比较稳定的版本
file
接下来选择支持的数据库
file
选择 mysql 数据库版本
file
redis 和 memcache 选上可用
file
都选好了点击那个按钮
file
这里的端口至少是 1025,改成 1025 再次点击那个按钮
file
下载一个压缩包,并解压到你的 docker 目录也就是你项目的目录
file
file
进入 phpdocker 文件夹,并打开 readme.html,有关安装的命令都在这里面呢,但是 Nginx 默认访问的是 public/index
file
接着修改 Nginx.conf 使其访问 application/index.php,修改 ./phpdocker/nginx/nginx.conf

server {
    listen 80 default;

    client_max_body_size 108M;

    access_log /var/log/nginx/application.access.log;

    #root /application/public;
    root /application;
    index index.php;

    if (!-e $request_filename) {
        rewrite ^.*$ /index.php last;
    }

    location ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }

二、执行命令安装

执行安装的信息都在 docker-compose.yml 文件中,修改该文件两个地方,并保存

    mysql:
      image: mysql:5.7
      container_name: docker-mysql
      working_dir: /application
      volumes:
        - .:/application
      environment:
        - MYSQL_ROOT_PASSWORD=123456
        - MYSQL_DATABASE=docker
        - MYSQL_USER=docker
        - MYSQL_PASSWORD=123456
      ports: #加上端口,不然3306没法访问
        - "3306:3306"
    webserver:
        image: nginx:alpine
        container_name: docker-webserver
        working_dir: /application
        volumes:
                - .:/application
                - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
        ports: 
         - "80:80" #1025改成80就能用默认端口访问了

执行 docker-compose up -d 下载
耐心等几分钟,有些下载的地方比较慢
file
file
下载完成,相应服务已经开启了
file
然后再项目目录里新建一个 index.php,看一下 phpinfo 里面的内容

<?php
    phpinfo();

访问地址 192.168.99.100 就是项目的文件,需要的扩展都给装好了
file
file
file
file
接下来你可以放任意的框架进去了,注意配置 nginx.conf 文件。
用客户端 navicat 也可以访问数据库了
file

总结

如果熟练了这一篇和上一篇的操作,那配置 lnmp 简直是神速,无论是本地开发还是生产部署是很方便的。相比传统的虚拟机,docker 这种要灵活很多。其实 docker 的功能远不止这些。docker 的工作流和git的工作流很像。下一篇准备写一下 docker 的工作流。先贴一张来自阿里云的图
file

siya

本帖已被设为精华帖!
本帖由系统于 2周前 自动加精
讨论数量: 2

第一篇docker文章

4周前 评论

这个环境使用方法会不会介绍的太少了,我一直以为项目根目录是nginx设置的/application/public,最后多试了几次才知道是phpdocker同级目录public

2天前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!