用 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
本帖已被设为精华帖!
本帖由系统于 4年前 自动加精
讨论数量: 12

第一篇docker文章

4年前 评论
Lolioy 4年前
CodeFarmer 4年前
siyalight (作者) (楼主) 4年前

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

4年前 评论

用laradock试了好久,安装的东西又多,还一堆错误,这个只试了两次就成功了。真心不错

4年前 评论

请问这个mysql镜像里面的 数据在哪个文件夹下存储?我想把它拿出来 做挂载

4年前 评论

当然是mysql默认的存储文件夹了,可以进到镜像里面找到它。然后你可以修改docker-compose.yml的文件。把它挂在到你的宿主机上面了

4年前 评论

好东西,查个眼回头操作一下

4年前 评论
xin6841414

第一天接触docker 看完这篇文章,实话说 懵逼。。文中并没有介绍操作这些步骤需要掌握哪些东西,去哪里执行命令,最后下载了个压缩包, 怎么用哩 尴尬的很,百度搜索半天找到的资料少之又少,社区需要大家共同出力,版主一个人肯定忙不过来的,希望热心的过来人,多写些东西,我先去踩坑了 :sweat_smile:

4年前 评论

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