自己撸一个 LaraDock(使用 Docker LNMP 部署 PHP 开发环境)

项目简介

Docker LNMP 是基于 docker-compose 开发的运行在 Docker 上的 LNMP 开发环境,包含 PHP、MySQL、Redis 等镜像并支持多版本切换,满足您的学习、开发和测试需求。

Github 地址:https://github.com/yanlongma/docker-lnmp

包含镜像

Docker LNMP 包含以下镜像,每种镜像支持多个版本:

  • nginx
  • php-fpm (7.3 - 7.2 - 7.1 - 5.6)
  • mysql (8.0 - 5.7 - 5.6)
  • mongo
  • redis (5.0 - 4.0)
  • memcached (1.5.16 - 1.5 - 1)

其中:

php-fpm 默认是 7.1 版本,如需使用其它版本,配置 .env 文件中 PHP_VERSION 即可;

mysql 默认是 5.7 版本,如需使用其它版本,配置 .env 文件中 MYSQL_VERSION 即可;

下载使用

Docker LNMP 默认将同级目录映射到 php-fpm 容器的工作目录,在项目的同级目录下载 Docker LNMP:

$ git clone https://github.com/yanlongma/docker-lnmp.git

进入 docker-lnmp 目录,生成配置文件 .env

$ cd docker-lnmp
$ cp env-template .env

如需映射到其它目录,配置 .env 文件中 WEB_ROOT_PATH 即可。

启动服务

在 docker-lnmp 目录,启动服务,命令如下:

$ docker-compose up -d nginx
Creating network "docker-lnmp_default" with the default driver
Creating docker-lnmp_mysql_1   ... done
Creating docker-lnmp_php-fpm_1 ... done
Creating docker-lnmp_nginx_1   ... done

nginx 默认会启动 php-fpm 和 mysql 服务,如需启动其它服务请手动添加,可选服务有 mongo、redis、memcached。

启动成功后,在 docker-lnmp 同级目录新建 phpinfo.php 文件,浏览器访问 http://localhost/phpinfo.php,则可看到 phpinfo() 相关信息。

关闭服务

在 docker-lnmp 目录,关闭服务,命令如下:

$ docker-compose down

构建服务

如修改 dockerfile 文件,需重新构建服务,如重新构建 php-fpm 命令如下:

$ docker-compose build php-fpm

建议先关闭服务,构建完成再重启服务。

虚拟主机

配置虚拟主机请参考 nignx/sites/yii.conf 文件,配置完需构建并重启服务。

License

MIT license

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 1年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 6

欢迎大家共同交流! :blush:

1年前 评论

仿laradock项目吗,反手就是一个赞

1年前 评论
yanlongma (楼主) 1年前

按照您的操作后,页面显示403,进入nginx容器里看也没有生成日志,哪里出了问题呢.... 哦对了我是在不是本地运行的

curl 127.0.0.1
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.17.2</center>
</body>
</html>
1年前 评论
yanlongma (楼主) 1年前

到时遇到问可能要请教下你,先给星

1年前 评论
yanlongma (楼主) 1年前

报错如下. 没看懂

D:\Docker\docker-lnmp (master -> origin)
λ docker-compose up
Removing dockerlnmp_php-fpm_1
dockerlnmp_mysql_1 is up-to-date
dockerlnmp_redis_1 is up-to-date
dockerlnmp_mongo_1 is up-to-dateRecreating 91cccfe96be1_dockerlnmp_php-fpm_1 ...

Recreating 91cccfe96be1_dockerlnmp_php-fpm_1 ... error

ERROR: for 91cccfe96be1_dockerlnmp_php-fpm_1  Cannot start service php-fpm: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/d/Docker/docker-lnmp/php-fpm/conf-7.1/php-fpm.conf\\\" to rootfs \\\"/mnt/sda1/var/lib/docker/overlay2/ebc468168910f3225413ef914e656ed4bdf86d880e9999009adb7ce8e34e42fa/merged\\\" at \\\"/mnt/sda1/var/lib/docker/overlay2/ebc468168910f3225413ef914e656ed4bdf86d880e9999009adb7ce8e34e42fa/merged/usr/local/etc/php-fpm.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

ERROR: for php-fpm  Cannot start service php-fpm: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/d/Docker/docker-lnmp/php-fpm/conf-7.1/php-fpm.conf\\\" to rootfs \\\"/mnt/sda1/var/lib/docker/overlay2/ebc468168910f3225413ef914e656ed4bdf86d880e9999009adb7ce8e34e42fa/merged\\\" at \\\"/mnt/sda1/var/lib/docker/overlay2/ebc468168910f3225413ef914e656ed4bdf86d880e9999009adb7ce8e34e42fa/merged/usr/local/etc/php-fpm.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: Encountered errors while bringing up the project.
11个月前 评论

老铁,今天用你的这个项目,然后发现部署的时候nginx起不来,找到了解决方案,找到 docker-lnmp\nginx\sites (对应自己电脑)然后修改 laravel.conf 然后把SSL相关的配置改改就可以了。我是选择了注释掉ssl相关配置

4个月前 评论
yanlongma (楼主) 4个月前

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