This commit is contained in:
Diego Antunes 2017-04-20 08:41:50 +12:00
commit a7624a7034
4 changed files with 150 additions and 299 deletions

View File

@ -8,7 +8,7 @@ env:
- PHP_VERSION=56 - PHP_VERSION=56
- PHP_VERSION=70 - PHP_VERSION=70
- PHP_VERSION=71 - PHP_VERSION=71
- HUGO_VERSION=0.20 - HUGO_VERSION=0.19
script: ./_scripts/travis-build.sh script: ./_scripts/travis-build.sh

View File

@ -4,14 +4,13 @@
[![Gitter](https://badges.gitter.im/LaraDock/laradock.svg)](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Gitter](https://badges.gitter.im/LaraDock/laradock.svg)](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
LaraDock能够帮你在**Docker**上快速搭建**Laravel**应用。 LaraDock 能够帮你在 **Docker** 上快速搭建 **Laravel** 应用。
<br>
就像Laravel Homestead一样但是Docker替换了Vagrant。 就像 Laravel Homestead 一样,但是 Docker 替换了 Vagrant。
> 先在使用 LaraDock然后再学习它们。 > 先在使用 LaraDock然后再学习它们。
<br>
## 目录 ## 目录
- [Intro](#Intro) - [Intro](#Intro)
- [Features](#features) - [Features](#features)
- [Supported Software's](#Supported-Containers) - [Supported Software's](#Supported-Containers)
@ -54,40 +53,44 @@ LaraDock能够帮你在**Docker**上快速搭建**Laravel**应用。
- [Help & Questions](#Help) - [Help & Questions](#Help)
<a name="Intro"></a> <a name="Intro"></a>
## 介绍 ## 介绍
LaraDock努力简化创建开发环境过程。
它包含预包装Docker镜像提供你一个美妙的开发环境而不需要安装PHP,NGINX,MySQL和其他任何软件在你本地机器上。 LaraDock 努力简化创建开发环境过程。
它包含预包装 Docker 镜像,提供你一个美妙的开发环境而不需要安装 PHP, NGINX, MySQL 和其他任何软件在你本地机器上。
**使用概览:** **使用概览:**
让我们了解使用它安装 `NGINX`, `PHP`, `Composer`, `MySQL``Redis`,然后运行 `Laravel`
让我们了解使用它安装`NGINX`, `PHP`, `Composer`, `MySQL``Redis`,然后运行`Laravel` 1. 将 LaraDock 放到你的 Laravel 项目中:
1. 将LaraDock放到你的Laravel项目中 ```bash
<br> git clone https://github.com/laradock/laradock.git
`git clone https://github.com/laradock/laradock.git`. ```
2. 进入LaraDock目录然后运行这些容器。
<br>
`docker-compose up -d nginx mysql redis`
3. 打开你的`.env`文件,然后设置`mysql`的`DB_HOST` 和 `redis`的`REDIS_HOST`。
4. 打开浏览器访问localhost
2. 进入 LaraDock 目录,然后运行这些容器。
```bash
docker-compose up -d nginx mysql redis
```
3. 打开你的 `.env` 文件,然后设置 `mysql``DB_HOST``redis` 的`REDIS_HOST`。
4. 打开浏览器,访问 localhost
<a name="features"></a> <a name="features"></a>
### 特点 ### 特点
- 在PHP版本7.05.6.5.5...之中可以简单切换。 - 在 PHP 版本7.05.6.5.5...之中可以简单切换。
- 可选择你最喜欢的数据库引擎比如MySQL, Postgres, MariaDB... - 可选择你最喜欢的数据库引擎比如MySQL, Postgres, MariaDB...
- 可运行自己的软件组合比如Memcached, HHVM, Beanstalkd... - 可运行自己的软件组合比如Memcached, HHVM, Beanstalkd...
- 所有软件运行在不同的容器之中比如PHP-FPM, NGINX, PHP-CLI... - 所有软件运行在不同的容器之中比如PHP-FPM, NGINX, PHP-CLI...
- 通过简单的编写`dockerfile`容易定制任何容器。 - 通过简单的编写 `Dockerfile` 容易定制任何容器。
- 所有镜像继承自一个官方基础镜像Trusted base Images - 所有镜像继承自一个官方基础镜像Trusted base Images
- 可预配置Laravel的Nginx环境 - 可预配置Laravel的Nginx环境
- 容易应用容器中的配置 - 容易应用容器中的配置 配置文件(`Dockerfile`
- 干净的结构化的Docker配置文件`dockerfile` - 最新的 Docker Compose 版本(`docker-compose`
- 最新的Docker Compose 版本(`docker-compose`
- 所有的都是可视化和可编辑的 - 所有的都是可视化和可编辑的
- 快速的镜像构建 - 快速的镜像构建
- 每周都会有更新... - 每周都会有更新...
@ -115,39 +118,37 @@ LaraDock努力简化创建开发环境过程。
- Beanstalkd (+ Beanstalkd Console) - Beanstalkd (+ Beanstalkd Console)
- **工具:** - **工具:**
- Workspace (PHP7-CLI, Composer, Git, Node, Gulp, SQLite, Vim, Nano, cURL...) - Workspace (PHP7-CLI, Composer, Git, Node, Gulp, SQLite, Vim, Nano, cURL...)
>如果你找不到你需要的软件,构建它然后把它添加到这个列表。你的贡献是受欢迎的。 >如果你找不到你需要的软件,构建它然后把它添加到这个列表。你的贡献是受欢迎的。
<a name="what-is-docker"></a> <a name="what-is-docker"></a>
### Docker是什么? ### Docker 是什么?
[Docker](https://www.docker.com) 是一个开源项目,自动化部署应用程序软件的容器,在Linux, Mac OS and Windows提供一个额外的抽象层和自动化的[操作系统级的虚拟化](https://en.wikipedia.org/wiki/Operating-system-level_virtualization) [Docker](https://www.docker.com) 是一个开源项目,自动化部署应用程序软件的容器,在 Linux, Mac OS and Windows 提供一个额外的抽象层和自动化的[操作系统级的虚拟化](https://en.wikipedia.org/wiki/Operating-system-level_virtualization)
<a name="what-is-laravel"></a> <a name="what-is-laravel"></a>
### Laravel是什么? ### Laravel 是什么?
额,这很认真的!!! 额,这很认真的!!!
<a name="why-docker-not-vagrant"></a> <a name="why-docker-not-vagrant"></a>
### 为什么使用Docker而不是Vagrant!? ### 为什么使用 Docker 而不是 Vagrant!?
[Vagrant](https://www.vagrantup.com)构建虚拟机需要几分钟然而Docker构建虚拟容器只需要几秒钟。 [Vagrant](https://www.vagrantup.com) 构建虚拟机需要几分钟然而 Docker 构建虚拟容器只需要几秒钟。
而不是提供一个完整的虚拟机,就像你用Vagrant,Docker为您提供**轻量级**虚拟容器,共享相同的内核和允许安全执行独立的进程。 而不是提供一个完整的虚拟机,就像你用 Vagrant, Docker 为您提供**轻量级**虚拟容器,共享相同的内核和允许安全执行独立的进程。
除了速度,Docker提供大量的Vagrant无法实现的功能。 除了速度, Docker 提供大量的 Vagrant 无法实现的功能。
最重要的是Docker可以运行在开发和生产(相同环境无处不在)。Vagrant是专为开发,(所以在生产环境你必须每一次重建您的服务器)。 最重要的是 Docker 可以运行在开发和生产(相同环境无处不在)。Vagrant 是专为开发,(所以在生产环境你必须每一次重建您的服务器)。
<a name="laradock-vs-homestead"></a> <a name="laradock-vs-homestead"></a>
### LaraDock Homestead 对比 ### LaraDock Homestead 对比
LaraDock and [Homestead](https://laravel.com/docs/master/homestead) 给你一个完整的虚拟开发环境。(不需要安装和配置软件在你自己的每一个操作系统)。 LaraDock and [Homestead](https://laravel.com/docs/master/homestead) 给你一个完整的虚拟开发环境。(不需要安装和配置软件在你自己的每一个操作系统)。
Homestead 是一个工具,为你控制虚拟机(使用Homestead特殊命令)。Vagrant可以管理你的管理虚容器。 Homestead 是一个工具,为你控制虚拟机(使用 Homestead 特殊命令)。Vagrant 可以管理你的管理虚容器。
运行一个虚拟容器比运行一整个虚拟机快多了**LaraDock 比 Homestead快多了**
运行一个虚拟容器比运行一整个虚拟机快多了 **LaraDock 比 Homestead 快多了**
<a name="Demo"></a> <a name="Demo"></a>
## 演示视频 ## 演示视频
@ -158,53 +159,41 @@ Homestead 是一个工具,为你控制虚拟机(使用Homestead特殊命令)。V
- LaraDock [v0.3](https://www.youtube.com/watch?v=jGkyO6Is_aI) - LaraDock [v0.3](https://www.youtube.com/watch?v=jGkyO6Is_aI)
- LaraDock [v0.1](https://www.youtube.com/watch?v=3YQsHe6oF80) - LaraDock [v0.1](https://www.youtube.com/watch?v=3YQsHe6oF80)
<a name="Requirements"></a> <a name="Requirements"></a>
## 依赖 ## 依赖
- [Git](https://git-scm.com/downloads) - [Git](https://git-scm.com/downloads)
- [Docker](https://www.docker.com/products/docker/) - [Docker](https://www.docker.com/products/docker/)
<a name="Installation"></a> <a name="Installation"></a>
## 安装 ## 安装
1 - 克隆 `LaraDock` 仓库: 1 - 克隆 `LaraDock` 仓库:
**A)** 如果你已经有一个Laravel项目,克隆这个仓库在到`Laravel`根目录 **A)** 如果你已经有一个 Laravel 项目,克隆这个仓库在到 `Laravel` 根目录
```bash ```bash
git submodule add https://github.com/laradock/laradock.git git submodule add https://github.com/laradock/laradock.git
``` ```
>如果你不是使用Git管理Laravel项目,您可以使用 `git clone` 而不是`git submodule`。
>如果你不是使用 Git 管理 Laravel 项目,您可以使用 `git clone` 而不是 `git submodule`
**B)** 如果你没有一个Laravel项目,你想Docker安装Laravel,克隆这个源在您的机器任何地方上: **B)** 如果你没有一个 Laravel 项目,你想 Docker 安装 Laravel,克隆这个源在您的机器任何地方上:
```bash ```bash
git clone https://github.com/laradock/laradock.git git clone https://github.com/laradock/laradock.git
``` ```
<a name="Usage"></a> <a name="Usage"></a>
## 使用 ## 使用
**请在开始之前阅读:** **请在开始之前阅读:**
如果你正在使用**Docker Toolbox** (VM),选择以下任何一个方法: 如果你正在使用 **Docker Toolbox** (VM),选择以下任何一个方法:
- 更新到Docker [Native](https://www.docker.com/products/docker) Mac/Windows版本 (建议). 查看 [Upgrading LaraDock](#upgrading-laradock) - 更新到 Docker [Native](https://www.docker.com/products/docker) Mac/Windows 版本 (建议). 查看 [Upgrading LaraDock](#upgrading-laradock)
- 使用 LaraDock v3.* (访问 `LaraDock-ToolBox` [分支](https://github.com/laradock/laradock/tree/LaraDock-ToolBox)). - 使用 LaraDock v3.* (访问 `LaraDock-ToolBox` [分支](https://github.com/laradock/laradock/tree/LaraDock-ToolBox)).
如果您使用的是**Docker Native**(Mac / Windows版本)甚至是Linux版本,通常可以继续阅读这个文档LaraDock v4以上版本将仅支持**Docker Native**。 如果您使用的是 **Docker Native**(Mac / Windows 版本)甚至是 Linux 版本,通常可以继续阅读这个文档LaraDock v4 以上版本将仅支持 **Docker Native**
<br>
<br>
1 - 运行容器: *(在运行`docker-compose`命令之前,确认你在 `laradock` 目录中*
1 - 运行容器: *(在运行 `docker-compose` 命令之前,确认你在 `laradock` 目录中*
**例子:** 运行 NGINX 和 MySQL: **例子:** 运行 NGINX 和 MySQL:
@ -213,77 +202,50 @@ docker-compose up -d nginx mysql
``` ```
你可以从以下列表选择你自己的容器组合: 你可以从以下列表选择你自己的容器组合:
`nginx`, `hhvm`, `php-fpm`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `apache2`, `caddy`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`. `nginx`, `hhvm`, `php-fpm`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `apache2`, `caddy`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`.
**说明**: `workspace``php-fpm` 将运行在大部分实例中, 所以不需要在 `up` 命令中加上它们. **说明**: `workspace``php-fpm` 将运行在大部分实例中, 所以不需要在 `up` 命令中加上它们.
<br>
2 - 进入 Workspace 容器, 执行像 (Artisan, Composer, PHPUnit, Gulp, ...)等命令 2 - 进入 Workspace 容器, 执行像 (Artisan, Composer, PHPUnit, Gulp, ...)等命令
```bash ```bash
docker-compose exec workspace bash docker-compose exec workspace bash
``` ```
<br />
增加 `--user=laradock` (例如 `docker-compose exec --user=laradock workspace bash`) 作为您的主机的用户创建的文件. (你可以从 `docker-compose.yml`修改 PUID (User id) 和 PGID (group id) 值 ). 增加 `--user=laradock` (例如 `docker-compose exec --user=laradock workspace bash`) 作为您的主机的用户创建的文件. (你可以从 `docker-compose.yml`修改 PUID (User id) 和 PGID (group id) 值 ).
<br>
3 - 编辑 Laravel 的配置. 3 - 编辑 Laravel 的配置.
如果你还没有安装Laravel项目请查看 [How to Install Laravel in a Docker Container](#Install-Laravel). 如果你还没有安装 Laravel 项目,请查看 [How to Install Laravel in a Docker Container](#Install-Laravel).
打开 Laravel的 `.env` 文件 然后 配置 你的`mysql`的`DB_HOST`: 打开 Laravel `.env` 文件 然后 配置 你的 `mysql` `DB_HOST`:
```env ```env
DB_HOST=mysql DB_HOST=mysql
``` ```
4 - 打开浏览器访问 localhost (`http://localhost/`).
<br>
4 - 打开浏览器访问localhost (`http://localhost/`).
<br>
**调试**: 如果你碰到任何问题,请查看 [调试](#debugging) 章节 **调试**: 如果你碰到任何问题,请查看 [调试](#debugging) 章节
如果你需要特别支持,请联系我,更多细节在[帮助 & 问题](#Help)章节 如果你需要特别支持,请联系我,更多细节在[帮助 & 问题](#Help)章节
<br>
<a name="Documentation"></a> <a name="Documentation"></a>
## 文档 ## 文档
<a name="Docker"></a> <a name="Docker"></a>
### [Docker] ### [Docker]
<a name="List-current-running-Containers"></a> <a name="List-current-running-Containers"></a>
### 列出正在运行的容器 ### 列出正在运行的容器
```bash ```bash
docker ps docker ps
``` ```
你也可以使用以下命令查看某项目的容器 你也可以使用以下命令查看某项目的容器
```bash ```bash
docker-compose ps docker-compose ps
``` ```
<br>
<a name="Close-all-running-Containers"></a> <a name="Close-all-running-Containers"></a>
### 关闭所有容器 ### 关闭所有容器
```bash ```bash
@ -296,25 +258,18 @@ docker-compose stop
docker-compose stop {容器名称} docker-compose stop {容器名称}
``` ```
<br>
<a name="Delete-all-existing-Containers"></a> <a name="Delete-all-existing-Containers"></a>
### 删除所有容器 ### 删除所有容器
```bash ```bash
docker-compose down docker-compose down
``` ```
小心这个命令,因为它也会删除你的数据容器。(如果你想保留你的数据你应该在上述命令后列出容器名称删除每个容器本身):* 小心这个命令,因为它也会删除你的数据容器。(如果你想保留你的数据你应该在上述命令后列出容器名称删除每个容器本身):*
<br>
<a name="Enter-Container"></a> <a name="Enter-Container"></a>
### 进入容器 (通过SSH 进入一个运行中的容器) ### 进入容器 (通过 SSH 进入一个运行中的容器)
1 - 首先使用 `docker ps`命令查看正在运行的容器 1 - 首先使用 `docker ps` 命令查看正在运行的容器
2 - 进入某个容器使用: 2 - 进入某个容器使用:
@ -331,12 +286,6 @@ docker-compose exec mysql bash
3 - 退出容器, 键入 `exit`. 3 - 退出容器, 键入 `exit`.
<br>
<a name="Edit-Container"></a> <a name="Edit-Container"></a>
### 编辑默认容器配置 ### 编辑默认容器配置
打开 `docker-compose.yml` 然后 按照你想的修改. 打开 `docker-compose.yml` 然后 按照你想的修改.
@ -357,18 +306,10 @@ docker-compose exec mysql bash
- "1111:6379" - "1111:6379"
``` ```
<br>
<a name="Edit-a-Docker-Image"></a> <a name="Edit-a-Docker-Image"></a>
### 编辑Docker镜像 ### 编辑 Docker 镜像
1 - 找到你想修改的镜像的 `dockerfile` , 1 - 找到你想修改的镜像的 `Dockerfile` ,
<br> <br>
例如: `mysql``mysql/Dockerfile`. 例如: `mysql``mysql/Dockerfile`.
@ -379,28 +320,19 @@ docker-compose exec mysql bash
```bash ```bash
docker-compose build mysql docker-compose build mysql
``` ```
更多信息在容器重建中 [点击这里](#Build-Re-build-Containers).
更多信息在容器重建中[点击这里](#Build-Re-build-Containers).
<br>
<a name="Build-Re-build-Containers"></a> <a name="Build-Re-build-Containers"></a>
### 建立/重建容器 ### 建立/重建容器
如果你做任何改变 `Dockerfile` 确保你运行这个命令,可以让所有修改更改生效:
如果你做任何改变`dockerfile`确保你运行这个命令,可以让所有修改更改生效:
```bash ```bash
docker-compose build docker-compose build
``` ```
选择你可以指定哪个容器重建(而不是重建所有的容器):
选择你可以指定哪个容器重建(而不是重建所有的容器):
```bash ```bash
docker-compose build {container-name} docker-compose build {container-name}
@ -408,25 +340,11 @@ docker-compose build {container-name}
如果你想重建整个容器,你可能需要使用 `--no-cache` 选项 (`docker-compose build --no-cache {container-name}`). 如果你想重建整个容器,你可能需要使用 `--no-cache` 选项 (`docker-compose build --no-cache {container-name}`).
<br>
<a name="Add-Docker-Images"></a> <a name="Add-Docker-Images"></a>
### 增加更多软件 (Docker 镜像) ### 增加更多软件 (Docker 镜像)
为了增加镜像(软件), 编辑 `docker-compose.yml` 添加容器细节, 你需要熟悉 [docker compose 文件语法](https://docs.docker.com/compose/compose-file/). 为了增加镜像(软件), 编辑 `docker-compose.yml` 添加容器细节, 你需要熟悉 [docker compose 文件语法](https://docs.docker.com/compose/compose-file/).
<br>
<a name="View-the-Log-files"></a> <a name="View-the-Log-files"></a>
### 查看日志文件 ### 查看日志文件
Nginx的日志在 `logs/nginx` 目录 Nginx的日志在 `logs/nginx` 目录
@ -437,19 +355,12 @@ Nginx的日志在 `logs/nginx` 目录
docker logs {container-name} docker logs {container-name}
``` ```
<br>
<a name="Laravel"></a> <a name="Laravel"></a>
### [Laravel] ### [Laravel]
<a name="Install-Laravel"></a> <a name="Install-Laravel"></a>
### 从Docker镜像安装Laravel ### 从 Docker 镜像安装 Laravel
1 - 首先你需要进入 Workspace 容器. 1 - 首先你需要进入 Workspace 容器.
2 - 安装 Laravel. 2 - 安装 Laravel.
@ -460,16 +371,15 @@ docker logs {container-name}
composer create-project laravel/laravel my-cool-app "5.2.*" composer create-project laravel/laravel my-cool-app "5.2.*"
``` ```
> 我们建议使用 `composer create-project` 替换Laravel 安装器去安装Laravel. > 我们建议使用 `composer create-project` 替换 Laravel 安装器去安装 Laravel.
关于更多Laravel安装内容请 [点击这儿](https://laravel.com/docs/master#installing-laravel). 关于更多 Laravel 安装内容请 [点击这儿](https://laravel.com/docs/master#installing-laravel).
3 - 编辑 `docker-compose.yml` 映射新的应用目录: 3 - 编辑 `docker-compose.yml` 映射新的应用目录:
系统默认LaraDock假定Laravel应用在LaraDock的父级目录中 系统默认 LaraDock 假定 Laravel 应用在 laradock 的父级目录中
By default LaraDock assumes the Laravel application is living in the parent directory of the laradock folder.
更新Laravel应用在 `my-cool-app` 目录中, 我们需要用 `../my-cool-app/:/var/www`替换 `../:/var/www` , 如下: 更新 Laravel 应用在 `my-cool-app` 目录中, 我们需要用 `../my-cool-app/:/var/www`替换 `../:/var/www` , 如下:
```yaml ```yaml
application: application:
@ -477,32 +387,33 @@ By default LaraDock assumes the Laravel application is living in the parent dire
volumes: volumes:
- ../my-cool-app/:/var/www - ../my-cool-app/:/var/www
``` ```
4 - 进入目录下继续工作.. 4 - 进入目录下继续工作..
```bash ```bash
cd my-cool-app cd my-cool-app
``` ```
5 - 回到LaraDock安装步骤,看看如何编辑`env`的文件。 5 - 回到 LaraDock 安装步骤,看看如何编辑 `.env` 的文件。
<br>
<a name="Run-Artisan-Commands"></a> <a name="Run-Artisan-Commands"></a>
### 运行 Artisan 命令 ### 运行 Artisan 命令
你可以从Workspace容器运行artisan命令和其他终端命令
1 - 确认Workspace容器已经运行. 你可以从 Workspace 容器运行 artisan 命令和其他终端命令
1 - 确认 Workspace 容器已经运行.
```bash ```bash
docker-compose up -d workspace // ..and all your other containers docker-compose up -d workspace // ..and all your other containers
``` ```
2 - 找到Workspace容器名称: 2 - 找到 Workspace 容器名称:
```bash ```bash
docker-compose ps docker-compose ps
``` ```
3 - 进入Workspace容器: 3 - 进入 Workspace 容器:
```bash ```bash
docker-compose exec workspace bash docker-compose exec workspace bash
@ -510,35 +421,33 @@ docker-compose exec workspace bash
增加 `--user=laradock` (例如 `docker-compose exec --user=laradock workspace bash`) 作为您的主机的用户创建的文件. 增加 `--user=laradock` (例如 `docker-compose exec --user=laradock workspace bash`) 作为您的主机的用户创建的文件.
4 - 运行任何你想的 :) 4 - 运行任何你想的 :)
```bash ```bash
php artisan php artisan
``` ```
```bash ```bash
Composer update composer update
``` ```
```bash ```bash
phpunit phpunit
``` ```
<br>
<a name="Use-Redis"></a> <a name="Use-Redis"></a>
### 使用 Redis ### 使用 Redis
1 - 首先务必用 `docker-compose up` 命令运行 (`redis`)容器. 1 - 首先务必用 `docker-compose up` 命令运行 (`redis`) 容器.
```bash ```bash
docker-compose up -d redis docker-compose up -d redis
``` ```
2 - 打开你的Laravel的 `.env` 文件 然后 配置`redis`的`REDIS_HOST` 2 - 打开你的Laravel的 `.env` 文件 然后 配置 `redis` `REDIS_HOST`
```env ```env
REDIS_HOST=redis REDIS_HOST=redis
``` ```
如果在你的`.env` 文件没有找到`REDIS_HOST`变量。打开数据库配置文件`config/database.php`然后用`redis`替换默认IP`127.0.0.1`,例如:
如果在你的 `.env` 文件没有找到 `REDIS_HOST` 变量。打开数据库配置文件 `config/database.php` 然后用 `redis` 替换默认 IP `127.0.0.1`,例如:
```php ```php
@ -552,44 +461,35 @@ REDIS_HOST=redis
], ],
``` ```
3 - 启用Redis缓存或者开启Session管理也在`.env`文件中用`redis`替换默认`file`设置`CACHE_DRIVER` 和 `SESSION_DRIVER` 3 - 启用 Redis 缓存或者开启 Session 管理也在 `.env` 文件中用 `redis` 替换默认 `file` 设置 `CACHE_DRIVER``SESSION_DRIVER`
```env ```env
CACHE_DRIVER=redis CACHE_DRIVER=redis
SESSION_DRIVER=redis SESSION_DRIVER=redis
``` ```
4 - 最好务必通过Compose安装 `predis/predis``(~1.0)`: 4 - 最好务必通过 Composer 安装 `predis/predis``(~1.0)`:
```bash ```bash
composer require predis/predis:^1.0 composer require predis/predis:^1.0
``` ```
5 - 你可以用以下代码在Laravel中手动测试 5 - 你可以用以下代码在 Laravel 中手动测试:
```php ```php
\Cache::store('redis')->put('LaraDock', 'Awesome', 10); \Cache::store('redis')->put('LaraDock', 'Awesome', 10);
``` ```
<br>
<a name="Use-Mongo"></a> <a name="Use-Mongo"></a>
### 使用 Mongo ### 使用 Mongo
1 - 首先在Workspace和PHP-FPM容器中安装`mongo`: 1 - 首先在 Workspace 和 PHP-FPM 容器中安装 `mongo`:
<br>
a) 打开 `docker-compose.yml` 文件
<br>
b) 在Workspace容器中找到`INSTALL_MONGO`选项:
<br> a) 打开 `docker-compose.yml` 文件
c) 设置为 `true` b) 在 Workspace 容器中找到 `INSTALL_MONGO` 选项:
<br> c) 设置为 `true`
d) 在PHP-FPM容器中找到`INSTALL_MONGO` <br> d) 在 PHP-FPM 容器中找到 `INSTALL_MONGO`
e) 设置为 `true` e) 设置为 `true`
相关配置项如下: 相关配置项如下:
@ -608,18 +508,19 @@ e) 设置为 `true`
... ...
``` ```
2 - 重建`Workspace、PHP-FPM`容器 `docker-compose build workspace php-fpm` 2 - 重建 `Workspace、PHP-FPM` 容器
```bash
docker-compose build workspace php-fpm
```
3 - 使用 `docker-compose up` 命令运行 MongoDB 容器 (`mongo`)
3 - 使用`docker-compose up` 命令运行MongoDB容器 (`mongo`)
```bash ```bash
docker-compose up -d mongo docker-compose up -d mongo
``` ```
4 - 在 `config/database.php` 文件添加 MongoDB 的配置项:
4 - 在`config/database.php` 文件添加MongoDB的配置项:
```php ```php
'connections' => [ 'connections' => [
@ -641,65 +542,53 @@ docker-compose up -d mongo
], ],
``` ```
5 - 打开Laravel的 `.env` 文件 然后 更新以下字段: 5 - 打开 Laravel `.env` 文件然后更新以下字段:
- 设置 `DB_HOST``mongo`的主机IP. - 设置 `DB_HOST``mongo` 的主机 IP.
- 设置 `DB_PORT``27017`. - 设置 `DB_PORT``27017`.
- 设置 `DB_DATABASE``database`. - 设置 `DB_DATABASE``database`.
6 - 最后务必通过Composer安装`jenssegers/mongodb`包添加服务提供者Laravel Service Provider 6 - 最后务必通过 Composer 安装 `jenssegers/mongodb` 添加服务提供者Laravel Service Provider
```bash ```bash
composer require jenssegers/mongodb composer require jenssegers/mongodb
``` ```
更多细节内容 [点击这儿](https://github.com/jenssegers/laravel-mongodb#installation). 更多细节内容 [点击这儿](https://github.com/jenssegers/laravel-mongodb#installation).
7 - 测试: 7 - 测试:
- 首先让你的模型继承Mongo的Eloquent Model. 查看 [文档](https://github.com/jenssegers/laravel-mongodb#eloquent). - 首先让你的模型继承 Mongo Eloquent Model. 查看 [文档](https://github.com/jenssegers/laravel-mongodb#eloquent).
- 进入Workspace容器. - 进入 Workspace 容器.
- 迁移数据库 `php artisan migrate`. - 迁移数据库 `php artisan migrate`.
<br>
<a name="PHP"></a> <a name="PHP"></a>
### [PHP] ### [PHP]
<a name="Install-PHP-Extensions"></a> <a name="Install-PHP-Extensions"></a>
### 安装PHP拓展 ### 安装 PHP 拓展
安装PHP扩展之前,你必须决定你是否需要`FPM`或`CLI`,因为他们安装在不同的容器上,如果你需要两者,则必须编辑两个容器。
PHP-FPM拓展务必安装在 `php-fpm/Dockerfile-XX`. *(用你PHP版本号替换 XX)*. 安装 PHP 扩展之前,你必须决定你是否需要 `FPM``CLI`,因为他们安装在不同的容器上,如果你需要两者,则必须编辑两个容器。
<br>
PHP-CLI拓展应该安装到`workspace/Dockerfile`.
PHP-FPM 拓展务必安装在 `php-fpm/Dockerfile-XX`. *(用你 PHP 版本号替换 XX)*.
PHP-CLI 拓展应该安装到 `workspace/Dockerfile`.
<br>
<a name="Change-the-PHP-FPM-Version"></a> <a name="Change-the-PHP-FPM-Version"></a>
### 修改PHP-FPM版本 ### 修改 PHP-FPM 版本
默认运行**PHP-FPM 7.0**版本. 默认运行 **PHP-FPM 7.0** 版本.
>PHP-FPM负责服务你的应用代码,如果你是计划运行您的应用程序在不同PHP-FPM版本上则不需要更改PHP-CLI版本。
>PHP-FPM 负责服务你的应用代码,如果你是计划运行您的应用程序在不同 PHP-FPM 版本上,则不需要更改 PHP-CLI 版本。
#### A) 切换版本 PHP `7.0` 到 PHP `5.6` #### A) 切换版本 PHP `7.0` 到 PHP `5.6`
1 - 打开 `docker-compose.yml` 1 - 打开 `docker-compose.yml`
2 - 在PHP容器的 `Dockerfile-70`文件。 2 - 在PHP容器的 `Dockerfile-70` 文件。
3 - 修改版本号, 用`Dockerfile-56`替换 `Dockerfile-70` , 例如: 3 - 修改版本号, 用 `Dockerfile-56` 替换 `Dockerfile-70` , 例如:
```txt ```txt
php-fpm: php-fpm:
@ -718,57 +607,39 @@ docker-compose build php
#### B) 切换版本 PHP `7.0``5.6` 到 PHP `5.5` #### B) 切换版本 PHP `7.0``5.6` 到 PHP `5.5`
我们已不在本地支持PHP5.5,但是你按照以下步骤获取: 我们已不在本地支持 PHP5.5,但是你按照以下步骤获取:
1 - 克隆 `https://github.com/laradock/php-fpm`. 1 - 克隆 `https://github.com/laradock/php-fpm`.
3 - 重命名 `Dockerfile-56``Dockerfile-55`. 2 - 重命名 `Dockerfile-56``Dockerfile-55`.
3 - 编辑文件 `FROM php:5.6-fpm``FROM php:5.5-fpm`. 3 - 编辑文件 `FROM php:5.6-fpm``FROM php:5.5-fpm`.
4 - 从 `Dockerfile-55`构建镜像. 4 - 从 `Dockerfile-55` 构建镜像.
5 - 打开 `docker-compose.yml` 文件. 5 - 打开 `docker-compose.yml` 文件.
6 - 将 `php-fpm` 指向你的 `Dockerfile-55` 文件. 6 - 将 `php-fpm` 指向你的 `Dockerfile-55` 文件.
<br>
<a name="Change-the-PHP-CLI-Version"></a> <a name="Change-the-PHP-CLI-Version"></a>
### 修改 PHP-CLI 版本 ### 修改 PHP-CLI 版本
默认运行**PHP-CLI 7.0**版本 默认运行 **PHP-CLI 7.0** 版本
>说明: PHP-CLI只用于执行Artisan和Composer命令不服务于你的应用代码这是PHP-FPM的工作所以编辑PHP-CLI的版本不是很重要。 >说明: PHP-CLI 只用于执行 Artisan 和 Composer 命令,不服务于你的应用代码,这是 PHP-FPM 的工作,所以编辑 PHP-CLI 的版本不是很重要。
PHP-CLI安装在Workspace容器改变PHP-CLI版本你需要编辑`workspace/Dockerfile`. PHP-CLI 安装在 Workspace 容器,改变 PHP-CLI 版本你需要编辑 `workspace/Dockerfile`.
现在你必须手动修改PHP-FPM的`Dockerfile`或者创建一个新的。 (可以考虑贡献功能). 现在你必须手动修改 PHP-FPM 的 `Dockerfile` 或者创建一个新的。 (可以考虑贡献功能).
<br>
<a name="Install-xDebug"></a> <a name="Install-xDebug"></a>
### 安装 xDebug ### 安装 xDebug
1 - 首先在Workspace和PHP-FPM容器安装 `xDebug`: 1 - 首先在 Workspace 和 PHP-FPM 容器安装 `xDebug`:
<br>
a) 打开 `docker-compose.yml` 文件 a) 打开 `docker-compose.yml` 文件
<br> b) 在 Workspace 容器中找到 `INSTALL_XDEBUG` 选项
b) 在Workspace容器中找到 `INSTALL_XDEBUG` 选项 c) 改为 `true`
<br> d) 在 PHP-FPM 容器中找到 `INSTALL_XDEBUG ` 选项
c) 改为 `true` e) 改为 `true`
<br>
d) 在PHP-FPM容器中找到 `INSTALL_XDEBUG ` 选项<br>
e) 改为 `true`
例如: 例如:
@ -789,44 +660,35 @@ e) 改为 `true`
2 - 重建容器 `docker-compose build workspace php-fpm` 2 - 重建容器 `docker-compose build workspace php-fpm`
<br>
<a name="Misc"></a> <a name="Misc"></a>
### [Misc] ### [Misc]
<br>
<a name="Use-custom-Domain"></a> <a name="Use-custom-Domain"></a>
### 使用自定义域名 (替换Docker的IP) ### 使用自定义域名 (替换 Docker 的 IP)
假定你的自定义域名是 `laravel.dev` 假定你的自定义域名是 `laravel.dev`
1 - 打开 `/etc/hosts` 文件 添加以下内容映射你的localhost 地址 `127.0.0.1``laravel.dev` 域名 1 - 打开 `/etc/hosts` 文件添加以下内容,映射你的 localhost 地址 `127.0.0.1``laravel.dev` 域名
```bash ```bash
127.0.0.1 laravel.dev 127.0.0.1 laravel.dev
``` ```
2 - 打开你的浏览器访问 `{http://laravel.dev}` 2 - 打开你的浏览器访问 `{http://laravel.dev}`
你可以在nginx配置文件自定义服务器名称,如下: 你可以在 nginx 配置文件自定义服务器名称,如下:
```conf ```conf
server_name laravel.dev; server_name laravel.dev;
``` ```
<br>
<a name="Enable-Global-Composer-Build-Install"></a> <a name="Enable-Global-Composer-Build-Install"></a>
### 安装全局Composer命令 ### 安装全局 Composer 命令
为启用全局Composer Install在容器构建中允许你安装composer的依赖然后构建完成后就是可用的。 为启用全局 Composer Install 在容器构建中允许你安装 composer 的依赖,然后构建完成后就是可用的。
1 - 打开 `docker-compose.yml` 文件 1 - 打开 `docker-compose.yml` 文件
2 - 在Workspace容器找到 `COMPOSER_GLOBAL_INSTALL` 选项并设置为 `true` 2 - 在 Workspace 容器找到 `COMPOSER_GLOBAL_INSTALL` 选项并设置为 `true`
例如: 例如:
@ -840,19 +702,16 @@ server_name laravel.dev;
``` ```
3 - 现在特价你的依赖关系到 `workspace/composer.json` 3 - 现在特价你的依赖关系到 `workspace/composer.json`
4 - 重建Workspace容器 `docker-compose build workspace` 4 - 重建 Workspace 容器 `docker-compose build workspace`
<br>
<a name="Install-Prestissimo"></a> <a name="Install-Prestissimo"></a>
### 安装 Prestissimo ### 安装 Prestissimo
[Prestissimo](https://github.com/hirak/prestissimo) 是一个平行安装功能的composer插件。 [Prestissimo](https://github.com/hirak/prestissimo) 是一个平行安装功能的 composer 插件。
1 - 在安装期间使全局Composer Install 正在运行:
点击这个 [启用全局Composer构建安装](#Enable-Global-Composer-Build-Install) 然后继续步骤1、2. 1 - 在安装期间,使全局 Composer Install 正在运行:
点击这个 [启用全局 Composer 构建安装](#Enable-Global-Composer-Build-Install) 然后继续步骤1、2.
2 - 添加 prestissimo 依赖到 Composer: 2 - 添加 prestissimo 依赖到 Composer:
@ -860,19 +719,17 @@ a - 现在打开 `workspace/composer.json` 文件
b - 添加 `"hirak/prestissimo": "^0.3"` 依赖 b - 添加 `"hirak/prestissimo": "^0.3"` 依赖
c - 重建Workspace容器 `docker-compose build workspace` c - 重建 Workspace 容器 `docker-compose build workspace`
<br>
<a name="Install-Node"></a> <a name="Install-Node"></a>
### 安装 Node + NVM ### 安装 Node + NVM
在Workspace 容器安装 NVM 和 NodeJS 在 Workspace 容器安装 NVM 和 NodeJS
1 - 打开 `docker-compose.yml` 文件 1 - 打开 `docker-compose.yml` 文件
2 - 在Workspace容器找到 `INSTALL_NODE` 选项设为 `true` 2 - 在 Workspace 容器找到 `INSTALL_NODE` 选项设为 `true`
例如: 例如:
@ -887,17 +744,14 @@ c - 重建Workspace容器 `docker-compose build workspace`
3 - 重建容器 `docker-compose build workspace` 3 - 重建容器 `docker-compose build workspace`
<br>
<a name="debugging"></a> <a name="debugging"></a>
### Debugging ### Debugging
*这里是你可能面临的常见问题列表,以及可能的解决方案.* *这里是你可能面临的常见问题列表,以及可能的解决方案.*
#### 看到空白页而不是Laravel的欢迎页面! #### 看到空白页而不是 Laravel 的欢迎页面!
在Laravel根目录运行下列命令: Laravel 根目录,运行下列命令:
```bash ```bash
sudo chmod -R 777 storage bootstrap/cache sudo chmod -R 777 storage bootstrap/cache
@ -909,34 +763,28 @@ sudo chmod -R 777 storage bootstrap/cache
#### 看到包含 `address already in use` 的错误 #### 看到包含 `address already in use` 的错误
确保你想运行的服务端口(80, 3306, etc.)不是已经被其他程序使用,例如`apache`/`httpd`服务或其他安装的开发工具 确保你想运行的服务端口(80, 3306, etc.)不是已经被其他程序使用,例如 `apache`/`httpd` 服务或其他安装的开发工具
<br>
<a name="upgrading-laradock"></a> <a name="upgrading-laradock"></a>
### LaraDock 升级 ### LaraDock 升级
从Docker Toolbox (VirtualBox)移动到Docker Native (for Mac/Windows),需要从 LaraDock v3.* 升级到 v4.*: Docker Toolbox (VirtualBox) 移动到 Docker Native (for Mac/Windows),需要从 LaraDock v3.* 升级到 v4.*:
1. 停止Docker虚拟机 `docker-machine stop {default}` 1. 停止 Docker 虚拟机 `docker-machine stop {default}`
2. 安装 Docker [Mac](https://docs.docker.com/docker-for-mac/) 或 [Windows](https://docs.docker.com/docker-for-windows/). 2. 安装 Docker [Mac](https://docs.docker.com/docker-for-mac/) 或 [Windows](https://docs.docker.com/docker-for-windows/).
3. 升级 LaraDock 到 `v4.*.*` (`git pull origin master`) 3. 升级 LaraDock 到 `v4.*.*` (`git pull origin master`)
4. 像之前一样使用LaraDock: `docker-compose up -d nginx mysql`. 4. 像之前一样使用 LaraDock: `docker-compose up -d nginx mysql`.
**说明:** 如果你面临任何上面的问题的最后一步:重建你所有的容器 **说明:** 如果你面临任何上面的问题的最后一步:重建你所有的容器
`docker-compose build --no-cache` ```bash
docker-compose build --no-cache
```
"警告:容器数据可能会丢失!" "警告:容器数据可能会丢失!"
<br>
## 贡献 ## 贡献
这个小项目是由一个有一个全职工作和很多的职责的人建立的,所以如果你喜欢这个项目,并且发现它需要一个bug修复或支持或新软件或升级任何容器,或其他任何. . 你是非常欢迎,欢迎毫不不犹豫地贡献吧:) 这个小项目是由一个有一个全职工作和很多的职责的人建立的,所以如果你喜欢这个项目,并且发现它需要一个 bug 修复或支持或新软件或升级任何容器,或其他任何. . 你是非常欢迎,欢迎毫不不犹豫地贡献吧:)
#### 阅读我们的 [贡献说明](https://github.com/laradock/laradock/blob/master/CONTRIBUTING.md) #### 阅读我们的 [贡献说明](https://github.com/laradock/laradock/blob/master/CONTRIBUTING.md)
@ -945,9 +793,9 @@ sudo chmod -R 777 storage bootstrap/cache
从聊天室 [Gitter](https://gitter.im/LaraDock/laradock) 社区获取帮助和支持. 从聊天室 [Gitter](https://gitter.im/LaraDock/laradock) 社区获取帮助和支持.
你也可以打开Github上的 [issue](https://github.com/laradock/laradock/issues) (将被贴上问题和答案) 或与大家讨论 [Gitter](https://gitter.im/LaraDock/laradock). 你也可以打开 Github 上的 [issue](https://github.com/laradock/laradock/issues) (将被贴上问题和答案) 或与大家讨论 [Gitter](https://gitter.im/LaraDock/laradock).
Docker或Laravel的特别帮助你可以在[Codementor.io](https://www.codementor.io/mahmoudz)上直接和项目创始人在线沟通 Docker Laravel 的特别帮助,你可以在 [Codementor.io](https://www.codementor.io/mahmoudz) 上直接和项目创始人在线沟通
## 关于作者 ## 关于作者

View File

@ -3,6 +3,8 @@
#### Build the Docker Images #### Build the Docker Images
if [ -n "${PHP_VERSION}" ]; then if [ -n "${PHP_VERSION}" ]; then
cp env-example .env cp env-example .env
sed -i -- 's/=false/=true/g' .env
cat .env
docker-compose build docker-compose build
docker images docker images
fi fi

View File

@ -450,6 +450,7 @@ services:
- php-fpm - php-fpm
networks: networks:
- frontend - frontend
- backend
### Certbot Container ################################## ### Certbot Container ##################################