# LaraDock
# 介绍
# 简介
一套完整的基于Docker的PHP开发环境。
包含了预先打包的Docker镜像,所有预先配置都是为了提供一个完美的PHP开发环境。
Laradock
是在laravel
社区众所周知的,因为这个项目最开始只关注在Docker
上运行的laravel
项目。后来,由于PHP社区的大量使用,它开始支持比如Symfony
、CodeIgniter
、WordPress
、Drupal
等其他的PHP项目。
# 快速概览
让我们来看一下用它安装NGINX
, PHP
, Composer
, MySQL
, Redis
and Beanstalkd
是多么容易:
- 克隆
Laradock
到你的PHP项目中:
git clone https://github.com/Laradock/laradock.git
- 进入laradock文件夹并重命名
env-example
为.env
:
cp env-example .env
- 运行你的容器:
docker-compose up -d nginx mysql redis beanstalkd
- 打开你项目里的
.env
文件并设置以下内容:
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd
- 打开浏览器并访问本地主机:
http://localhost
.
That's it! enjoy :)
# 特点
- 轻松切换PHP版本: 7.1, 7.0, 5.6...
- 选择你最喜欢的数据库引擎: MySQL, Postgres, MariaDB...
- 运行你自己的软件组合: Memcached, HHVM, Beanstalkd...
- 每个软件都运行在一个单独的容器中: PHP-FPM, NGINX, PHP-CLI...
- 通过简单的编辑
Dockerfile
很容易定制任何容器 - 所有镜像都继承自官方的基础镜像 (可信任的基础镜像)。
- 预先配置在您的根目录下的NGINX可以托管任何代码。
- 每个项目都可以使用laradock,或者所有项目也可以共用一个laradock。
- 可以很容易的使用环境变量安装/删除容器中的软件。
- 干净、结构很好的Dockerfiles (
Dockerfile
)。 - 最新版的Docker Compose文件 (
docker-compose
)。 - 一切都是可见、可编辑的。
- 快速的镜像构建。
- 每周会有更多更新。
# 支持的软件
在秉承Docker推动的关注分离原则的同时,Laradock在各自的容器中(Container)独立运行各自的软件,你可以像任何容器一样打开/关闭多个实例,而不用担心配置,一切都很有魅力。
- 数据库引擎: MySQL - MariaDB - Percona - MongoDB - Neo4j - RethinkDB - MSSQL - PostgreSQL - Postgres-PostGIS.
- 数据库管理: PhpMyAdmin - Adminer - PgAdmin
- 缓存引擎: Redis - Memcached - Aerospike
- PHP 服务器: NGINX - Apache2 - Caddy
- PHP 编译器: PHP FPM - HHVM
- 消息队列: Beanstalkd - RabbitMQ - PHP Worker
- 队列管理: Beanstalkd Console - RabbitMQ Console
- 随机 工具: HAProxy - Certbot - Blackfire - Selenium - Jenkins - ElasticSearch - Kibana - Grafana - Mailhog - MailDev - Minio - Varnish - Swoole - Laravel Echo...
作为一个开发环境,Laradock引入了Workspace镜像,它包含一套丰富的有用的工具,所有工具都用上预先配置好的,几乎可以与所有你选择的容器或者工具组合起来一起工作。
Workspace 镜像工具
PHP CLI - Composer - Git - Linuxbrew - Node - V8JS - Gulp - SQLite - xDebug - Envoy - Deployer - Vim - Yarn - SOAP - Drush...
你可以从.env
文件中选择要安装的在工作区的容器和其它容器中的工具。
如果你修改
docker-compose.yml
,.env
或者任何dockerfile
文件, 你必须重新构建你的容器, 在运行实例中查看这些修改的效果。
如果您在列表中找不到您的软件,请自行构建并提交。贡献欢迎:)
# 赞助商
通过成为赞助商来支持这个项目。
您的logo将会显示在github 仓库 的索引页和 文档 主页, 并链接到您的网站. [成为赞助商]
# 什么是Docker
Docker 是一个开发、运输、运行应用程序的开放平台。
Docker可以使你将应用程序和你的基础架构(设备)分离,因此你可以快速的交付你软件。
使用Docker,你可以管理应用程序一样管理你的基础架构,通过使用Docker的methodologies来快速的传输、测试和部署代码,可以显著的缩短编写代码和生成环境中运行的代码之间的延迟。
# 为什么是Docker而不是Vagrant
Vagrant 可以在进分钟内创建虚拟机, 而 Docker 是在几秒中内创建虚拟容器。
Docker提供轻量级的虚拟容器,它们共享相同的内核,并允许安全的执行独立的进程,而不像Vagrant一样提供完整的虚拟机。
除了速度之外,Docker还提供了很多Vagrant无法实现的功能。
最重要的是,Docker可以运行在开发和生产(任何地方都可以做到相同的环境),而Vagrant仅仅只是为了开发而设计(因此您必须每次在生产环境中重新配置您的服务器)
# 入门
# 要求
# 安装
选择最适合你的需求进行设置
- 单个项目的设置
- 多个项目的设置
# 单个项目的设置
(如果你想为每个项目单独配置Docker环境,按照下面这些步骤)
# 已经有一个PHP项目
# 1.将laradock克隆到你项目的根目录:
git submodule add https://github.com/Laradock/laradock.git
注意: 如果你还没有为你的项目使用Git,你可以使用 git clone
代替 git submodule
。
记录你的laradock的变化同时保持更新laradock到你的项目 查看这些文档
你的文件夹结构应该如下所示:
+ project-a
+ laradock-a
+ project-b
+ laradock-b
(如果你想为每个项目运行单独的laradock,将laradock文件夹重命名为每个项目中的唯一名称很重要).
现在跳转到用法部分.
# 还没有一个PHP项目
# 1.将repository克隆到你机器的任意位置:
git clone https://github.com/laradock/laradock.git
你的文件夹结构应该如下所示
+ laradock
+ project-z
# 2.编辑你的web服务器站点配置
我们需要去执行用法部分的第一步来实现这一点
cp env-example .env
在顶部, 修改 APPLICATION
变量为你的项目路径.
APPLICATION=../project-z/
确保使用你的项目文件夹名称将project-z
进行替换
现在跳转到用法部分
# 多个项目的设置
(如果你想为你的所有项目使用单个的Docker环境,请遵循以下步骤)
# 1.在你的机器上的任意位置克隆repository(类似于上面的还没有一个PHP项目):
git clone https://github.com/laradock/laradock.git
你的文件夹结构应该如下所示:
+ laradock
+ project-1
+ project-2
# 2.进入nginx/sites
为访问的不同的域名创建配置文件去指向不同的项目目录
默认情况下laradock包含app.conf.example
, laravel.conf.example
和 symfony.conf.example
作为工作样本
# 3.修改默认名称为*.conf
:
你可以根据需要重命名配置文件、项目文件夹和域名,只要确保root
在配置文件中指向正确的文件夹名称即可。
# 4.在hosts文件中增加域名
127.0.0.1 project-1.test
127.0.0.1 project-2.test
...
如果你使用的是Chrome 63或者更高版本进行开发的,请勿使用.dev
的域名 为什么?. 使用 .localhost
, .invalid
, .test
, .example
取代它。
现在跳转到用法部分
# 用法
开始阅读之前:
如果你使用的是 Docker Toolbox (VM), 请执行以下操作中的任意一个:
# 升级Mac/WindowsNative(推荐). 检查升级 Laradock
# 使用 Laradock v3.*. Visit the Laradock-ToolBox branch. (outdated)
我们推荐使用比1.13更新的Docker版本
警告: 如果你使用旧版的laradock,强烈推荐你所使用的容器,你需要看怎样重新构建容器以尽量避免错误
# 1.进入laradock文件夹并复制env-example
to .env
cp env-example .env
你可以编辑.env
文件去选择你想在环境中安装的软件,你始终可以参考docker-compose.yml
文件去看如何使用这些变量。
根据主机的操作系统,您可能需要更改给定的值 COMPOSE_FILE
的值, 当你在MacOS上运行laradock时要使用的文件分隔符是:
, 当你在Windows环境上运行laradock时,必须使用 ;
来作为多个文件的分隔符。
这里需要对配置针对性修改一下:
# 如果您需要更改源(即中国),请将CHANGE_SOURCE 设置为true
CHANGE_SOURCE=true
# mysql 默认使用的是 latest 最新版本,我这里设置成 5.7 是为了兼容
MYSQL_VERSION=5.7
# composer 全局安装,建议开启
WORKSPACE_COMPOSER_GLOBAL_INSTALL=true
# composer 中国镜像,如果使用 composer 一定要配置
WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer
# npm 的淘宝镜像
WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
# 是否安装 node 根据需求,可选(安装它可能导致,一直安装不上)
WORKSPACE_INSTALL_NODE=true
# node 版本
WORKSPACE_NODE_VERSION=node
# npm 淘宝镜像
WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org
# 安装 pnpm
WORKSPACE_INSTALL_PNPM=false
# 安装 yarn ,根据需求可选
WORKSPACE_INSTALL_YARN=true
# 安装最新版 yarn
WORKSPACE_YARN_VERSION=latest
# 安装 npm gulp 压缩工具,默认安装(安装它可能导致,一直安装不上)
WORKSPACE_INSTALL_NPM_GULP=true
WORKSPACE_INSTALL_NPM_BOWER=false
WORKSPACE_INSTALL_NPM_VUE_CLI=true
WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false
# 2.运行docker-compose
来构建环境
在这个例子中我们将看到如何运行Nginx(web服务器)和MySQL(数据库引擎)来托管一个PHP脚本
docker-compose up -d nginx mysql
注意: 大多数情况下 workspace
和 php-fpm
会自动运行, 所以不需要再up
命令中指定它们, 如果你找不到他们,那么你需要这样指定它们: docker-compose up -d nginx php-fpm mysql workspace
。
你可以从这个列表中选择自己的容器组合
(请注意,有时我们忘记更新文档,请检查docker-compose.yml
文件以查看所有可用容器的更新列表)
# 3.进入Workspace容器, 执行比如(Artisan, Composer, PHPUnit, Gulp, ...)等命令
docker-compose exec workspace bash
另外, 针对 Windows PowerShell 用户: 执行以下命令以进入任何正在运行的容器:
docker exec -it {workspace-container-id} bash
注意: 你可以添加--user=laradock
来创建主机的用户. 比如:
docker-compose exec --user=laradock workspace bash
您可以从.env
文件中更改PUID (用户标识) 和 PGID (组标识) 变量
# 4.更新您的项目配置以使用数据库主机
打开你PHP项目的.env
文件或者你正在读取的配置文件, 并将数据库配置DB_HOST
设置为mysql
:
DB_HOST=mysql
如果你想将laravel安装为PHP项目, 请参阅 如和在Docker容器中安装laravel.