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=70
- PHP_VERSION=71
- HUGO_VERSION=0.20
- HUGO_VERSION=0.19
script: ./_scripts/travis-build.sh

View File

@ -5,13 +5,12 @@
[![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** 应用。
<br>
就像 Laravel Homestead 一样,但是 Docker 替换了 Vagrant。
> 先在使用 LaraDock然后再学习它们。
<br>
## 目录
- [Intro](#Intro)
- [Features](#features)
- [Supported Software's](#Supported-Containers)
@ -54,26 +53,31 @@ LaraDock能够帮你在**Docker**上快速搭建**Laravel**应用。
- [Help & Questions](#Help)
<a name="Intro"></a>
## 介绍
LaraDock 努力简化创建开发环境过程。
它包含预包装 Docker 镜像,提供你一个美妙的开发环境而不需要安装 PHP, NGINX, MySQL 和其他任何软件在你本地机器上。
**使用概览:**
让我们了解使用它安装 `NGINX`, `PHP`, `Composer`, `MySQL``Redis`,然后运行 `Laravel`
1. 将 LaraDock 放到你的 Laravel 项目中:
<br>
`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
```bash
git clone https://github.com/laradock/laradock.git
```
2. 进入 LaraDock 目录,然后运行这些容器。
```bash
docker-compose up -d nginx mysql redis
```
3. 打开你的 `.env` 文件,然后设置 `mysql``DB_HOST``redis` 的`REDIS_HOST`。
4. 打开浏览器,访问 localhost
<a name="features"></a>
### 特点
@ -82,11 +86,10 @@ LaraDock努力简化创建开发环境过程。
- 可选择你最喜欢的数据库引擎比如MySQL, Postgres, MariaDB...
- 可运行自己的软件组合比如Memcached, HHVM, Beanstalkd...
- 所有软件运行在不同的容器之中比如PHP-FPM, NGINX, PHP-CLI...
- 通过简单的编写`dockerfile`容易定制任何容器。
- 通过简单的编写 `Dockerfile` 容易定制任何容器。
- 所有镜像继承自一个官方基础镜像Trusted base Images
- 可预配置Laravel的Nginx环境
- 容易应用容器中的配置
- 干净的结构化的Docker配置文件`dockerfile`
- 容易应用容器中的配置 配置文件(`Dockerfile`
- 最新的 Docker Compose 版本(`docker-compose`
- 所有的都是可视化和可编辑的
- 快速的镜像构建
@ -115,6 +118,7 @@ LaraDock努力简化创建开发环境过程。
- Beanstalkd (+ Beanstalkd Console)
- **工具:**
- Workspace (PHP7-CLI, Composer, Git, Node, Gulp, SQLite, Vim, Nano, cURL...)
>如果你找不到你需要的软件,构建它然后把它添加到这个列表。你的贡献是受欢迎的。
<a name="what-is-docker"></a>
@ -127,7 +131,6 @@ LaraDock努力简化创建开发环境过程。
额,这很认真的!!!
<a name="why-docker-not-vagrant"></a>
### 为什么使用 Docker 而不是 Vagrant!?
@ -147,8 +150,6 @@ Homestead 是一个工具,为你控制虚拟机(使用Homestead特殊命令)。V
运行一个虚拟容器比运行一整个虚拟机快多了 **LaraDock 比 Homestead 快多了**
<a name="Demo"></a>
## 演示视频
还有什么比**演示视频**好:
@ -158,20 +159,15 @@ Homestead 是一个工具,为你控制虚拟机(使用Homestead特殊命令)。V
- LaraDock [v0.3](https://www.youtube.com/watch?v=jGkyO6Is_aI)
- LaraDock [v0.1](https://www.youtube.com/watch?v=3YQsHe6oF80)
<a name="Requirements"></a>
## 依赖
- [Git](https://git-scm.com/downloads)
- [Docker](https://www.docker.com/products/docker/)
<a name="Installation"></a>
## 安装
1 - 克隆 `LaraDock` 仓库:
**A)** 如果你已经有一个 Laravel 项目,克隆这个仓库在到 `Laravel` 根目录
@ -179,8 +175,8 @@ Homestead 是一个工具,为你控制虚拟机(使用Homestead特殊命令)。V
```bash
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,克隆这个源在您的机器任何地方上:
@ -188,24 +184,17 @@ git submodule add https://github.com/laradock/laradock.git
git clone https://github.com/laradock/laradock.git
```
<a name="Usage"></a>
## 使用
**请在开始之前阅读:**
如果你正在使用 **Docker Toolbox** (VM),选择以下任何一个方法:
- 更新到 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)).
如果您使用的是 **Docker Native**(Mac / Windows 版本)甚至是 Linux 版本,通常可以继续阅读这个文档LaraDock v4 以上版本将仅支持 **Docker Native**
<br>
<br>
1 - 运行容器: *(在运行 `docker-compose` 命令之前,确认你在 `laradock` 目录中*
**例子:** 运行 NGINX 和 MySQL:
```bash
@ -213,26 +202,18 @@ docker-compose up -d nginx mysql
```
你可以从以下列表选择你自己的容器组合:
`nginx`, `hhvm`, `php-fpm`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `apache2`, `caddy`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`.
**说明**: `workspace``php-fpm` 将运行在大部分实例中, 所以不需要在 `up` 命令中加上它们.
<br>
2 - 进入 Workspace 容器, 执行像 (Artisan, Composer, PHPUnit, Gulp, ...)等命令
```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) 值 ).
<br>
3 - 编辑 Laravel 的配置.
如果你还没有安装 Laravel 项目,请查看 [How to Install Laravel in a Docker Container](#Install-Laravel).
@ -243,47 +224,28 @@ docker-compose exec workspace bash
DB_HOST=mysql
```
<br>
4 - 打开浏览器访问 localhost (`http://localhost/`).
<br>
**调试**: 如果你碰到任何问题,请查看 [调试](#debugging) 章节
如果你需要特别支持,请联系我,更多细节在[帮助 & 问题](#Help)章节
<br>
<a name="Documentation"></a>
## 文档
<a name="Docker"></a>
### [Docker]
<a name="List-current-running-Containers"></a>
### 列出正在运行的容器
```bash
docker ps
```
你也可以使用以下命令查看某项目的容器
```bash
docker-compose ps
```
<br>
<a name="Close-all-running-Containers"></a>
### 关闭所有容器
```bash
@ -296,21 +258,14 @@ docker-compose stop
docker-compose stop {容器名称}
```
<br>
<a name="Delete-all-existing-Containers"></a>
### 删除所有容器
```bash
docker-compose down
```
小心这个命令,因为它也会删除你的数据容器。(如果你想保留你的数据你应该在上述命令后列出容器名称删除每个容器本身):*
<br>
<a name="Enter-Container"></a>
### 进入容器 (通过 SSH 进入一个运行中的容器)
@ -331,12 +286,6 @@ docker-compose exec mysql bash
3 - 退出容器, 键入 `exit`.
<br>
<a name="Edit-Container"></a>
### 编辑默认容器配置
打开 `docker-compose.yml` 然后 按照你想的修改.
@ -357,18 +306,10 @@ docker-compose exec mysql bash
- "1111:6379"
```
<br>
<a name="Edit-a-Docker-Image"></a>
### 编辑 Docker 镜像
1 - 找到你想修改的镜像的 `dockerfile` ,
1 - 找到你想修改的镜像的 `Dockerfile` ,
<br>
例如: `mysql``mysql/Dockerfile`.
@ -379,28 +320,19 @@ docker-compose exec mysql bash
```bash
docker-compose build mysql
```
更多信息在容器重建中[点击这里](#Build-Re-build-Containers).
<br>
<a name="Build-Re-build-Containers"></a>
### 建立/重建容器
如果你做任何改变`dockerfile`确保你运行这个命令,可以让所有修改更改生效:
如果你做任何改变 `Dockerfile` 确保你运行这个命令,可以让所有修改更改生效:
```bash
docker-compose build
```
选择你可以指定哪个容器重建(而不是重建所有的容器):
选择你可以指定哪个容器重建(而不是重建所有的容器):
```bash
docker-compose build {container-name}
@ -408,25 +340,11 @@ docker-compose build {container-name}
如果你想重建整个容器,你可能需要使用 `--no-cache` 选项 (`docker-compose build --no-cache {container-name}`).
<br>
<a name="Add-Docker-Images"></a>
### 增加更多软件 (Docker 镜像)
为了增加镜像(软件), 编辑 `docker-compose.yml` 添加容器细节, 你需要熟悉 [docker compose 文件语法](https://docs.docker.com/compose/compose-file/).
<br>
<a name="View-the-Log-files"></a>
### 查看日志文件
Nginx的日志在 `logs/nginx` 目录
@ -437,19 +355,12 @@ Nginx的日志在 `logs/nginx` 目录
docker logs {container-name}
```
<br>
<a name="Laravel"></a>
### [Laravel]
<a name="Install-Laravel"></a>
### 从 Docker 镜像安装 Laravel
1 - 首先你需要进入 Workspace 容器.
2 - 安装 Laravel.
@ -466,8 +377,7 @@ composer create-project laravel/laravel my-cool-app "5.2.*"
3 - 编辑 `docker-compose.yml` 映射新的应用目录:
系统默认LaraDock假定Laravel应用在LaraDock的父级目录中
By default LaraDock assumes the Laravel application is living in the parent directory of the laradock folder.
系统默认 LaraDock 假定 Laravel 应用在 laradock 的父级目录中
更新 Laravel 应用在 `my-cool-app` 目录中, 我们需要用 `../my-cool-app/:/var/www`替换 `../:/var/www` , 如下:
@ -477,17 +387,18 @@ By default LaraDock assumes the Laravel application is living in the parent dire
volumes:
- ../my-cool-app/:/var/www
```
4 - 进入目录下继续工作..
```bash
cd my-cool-app
```
5 - 回到LaraDock安装步骤,看看如何编辑`env`的文件。
5 - 回到 LaraDock 安装步骤,看看如何编辑 `.env` 的文件。
<br>
<a name="Run-Artisan-Commands"></a>
### 运行 Artisan 命令
你可以从 Workspace 容器运行 artisan 命令和其他终端命令
1 - 确认 Workspace 容器已经运行.
@ -510,25 +421,22 @@ docker-compose exec workspace bash
增加 `--user=laradock` (例如 `docker-compose exec --user=laradock workspace bash`) 作为您的主机的用户创建的文件.
4 - 运行任何你想的 :)
```bash
php artisan
```
```bash
Composer update
composer update
```
```bash
phpunit
```
<br>
<a name="Use-Redis"></a>
### 使用 Redis
1 - 首先务必用 `docker-compose up` 命令运行 (`redis`) 容器.
```bash
docker-compose up -d redis
```
@ -538,6 +446,7 @@ docker-compose up -d redis
```env
REDIS_HOST=redis
```
如果在你的 `.env` 文件没有找到 `REDIS_HOST` 变量。打开数据库配置文件 `config/database.php` 然后用 `redis` 替换默认 IP `127.0.0.1`,例如:
@ -559,7 +468,7 @@ CACHE_DRIVER=redis
SESSION_DRIVER=redis
```
4 - 最好务必通过Compose安装 `predis/predis``(~1.0)`:
4 - 最好务必通过 Composer 安装 `predis/predis``(~1.0)`:
```bash
composer require predis/predis:^1.0
@ -571,24 +480,15 @@ composer require predis/predis:^1.0
\Cache::store('redis')->put('LaraDock', 'Awesome', 10);
```
<br>
<a name="Use-Mongo"></a>
### 使用 Mongo
1 - 首先在 Workspace 和 PHP-FPM 容器中安装 `mongo`:
<br>
a) 打开 `docker-compose.yml` 文件
<br>
b) 在Workspace容器中找到`INSTALL_MONGO`选项:
<br>
a) 打开 `docker-compose.yml` 文件
b) 在 Workspace 容器中找到 `INSTALL_MONGO` 选项:
c) 设置为 `true`
<br>
d) 在PHP-FPM容器中找到`INSTALL_MONGO` <br>
d) 在 PHP-FPM 容器中找到 `INSTALL_MONGO`
e) 设置为 `true`
相关配置项如下:
@ -608,9 +508,11 @@ 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`)
@ -618,7 +520,6 @@ e) 设置为 `true`
docker-compose up -d mongo
```
4 - 在 `config/database.php` 文件添加 MongoDB 的配置项:
```php
@ -654,6 +555,7 @@ docker-compose up -d mongo
```bash
composer require jenssegers/mongodb
```
更多细节内容 [点击这儿](https://github.com/jenssegers/laravel-mongodb#installation).
7 - 测试:
@ -662,37 +564,24 @@ composer require jenssegers/mongodb
- 进入 Workspace 容器.
- 迁移数据库 `php artisan migrate`.
<br>
<a name="PHP"></a>
### [PHP]
<a name="Install-PHP-Extensions"></a>
### 安装 PHP 拓展
安装 PHP 扩展之前,你必须决定你是否需要 `FPM``CLI`,因为他们安装在不同的容器上,如果你需要两者,则必须编辑两个容器。
PHP-FPM 拓展务必安装在 `php-fpm/Dockerfile-XX`. *(用你 PHP 版本号替换 XX)*.
<br>
PHP-CLI 拓展应该安装到 `workspace/Dockerfile`.
<br>
<a name="Change-the-PHP-FPM-Version"></a>
### 修改 PHP-FPM 版本
默认运行 **PHP-FPM 7.0** 版本.
>PHP-FPM 负责服务你的应用代码,如果你是计划运行您的应用程序在不同 PHP-FPM 版本上,则不需要更改 PHP-CLI 版本。
#### A) 切换版本 PHP `7.0` 到 PHP `5.6`
1 - 打开 `docker-compose.yml`
@ -722,7 +611,7 @@ docker-compose build php
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`.
@ -733,17 +622,6 @@ docker-compose build php
6 - 将 `php-fpm` 指向你的 `Dockerfile-55` 文件.
<br>
<a name="Change-the-PHP-CLI-Version"></a>
### 修改 PHP-CLI 版本
默认运行 **PHP-CLI 7.0** 版本
@ -752,22 +630,15 @@ docker-compose build php
PHP-CLI 安装在 Workspace 容器,改变 PHP-CLI 版本你需要编辑 `workspace/Dockerfile`.
现在你必须手动修改 PHP-FPM 的 `Dockerfile` 或者创建一个新的。 (可以考虑贡献功能).
<br>
<a name="Install-xDebug"></a>
### 安装 xDebug
1 - 首先在 Workspace 和 PHP-FPM 容器安装 `xDebug`:
<br>
a) 打开 `docker-compose.yml` 文件
<br>
b) 在 Workspace 容器中找到 `INSTALL_XDEBUG` 选项
<br>
c) 改为 `true`
<br>
d) 在PHP-FPM容器中找到 `INSTALL_XDEBUG ` 选项<br>
d) 在 PHP-FPM 容器中找到 `INSTALL_XDEBUG ` 选项
e) 改为 `true`
例如:
@ -789,14 +660,9 @@ e) 改为 `true`
2 - 重建容器 `docker-compose build workspace php-fpm`
<br>
<a name="Misc"></a>
### [Misc]
<br>
<a name="Use-custom-Domain"></a>
### 使用自定义域名 (替换 Docker 的 IP)
@ -811,14 +677,10 @@ e) 改为 `true`
你可以在 nginx 配置文件自定义服务器名称,如下:
```conf
server_name laravel.dev;
```
<br>
<a name="Enable-Global-Composer-Build-Install"></a>
### 安装全局 Composer 命令
@ -842,14 +704,11 @@ server_name laravel.dev;
4 - 重建 Workspace 容器 `docker-compose build workspace`
<br>
<a name="Install-Prestissimo"></a>
### 安装 Prestissimo
[Prestissimo](https://github.com/hirak/prestissimo) 是一个平行安装功能的 composer 插件。
1 - 在安装期间,使全局 Composer Install 正在运行:
点击这个 [启用全局 Composer 构建安装](#Enable-Global-Composer-Build-Install) 然后继续步骤1、2.
@ -863,13 +722,11 @@ b - 添加 `"hirak/prestissimo": "^0.3"` 依赖
c - 重建 Workspace 容器 `docker-compose build workspace`
<br>
<a name="Install-Node"></a>
### 安装 Node + NVM
在 Workspace 容器安装 NVM 和 NodeJS
1 - 打开 `docker-compose.yml` 文件
2 - 在 Workspace 容器找到 `INSTALL_NODE` 选项设为 `true`
@ -887,9 +744,6 @@ c - 重建Workspace容器 `docker-compose build workspace`
3 - 重建容器 `docker-compose build workspace`
<br>
<a name="debugging"></a>
### Debugging
@ -911,8 +765,6 @@ sudo chmod -R 777 storage bootstrap/cache
确保你想运行的服务端口(80, 3306, etc.)不是已经被其他程序使用,例如 `apache`/`httpd` 服务或其他安装的开发工具
<br>
<a name="upgrading-laradock"></a>
### LaraDock 升级
@ -925,16 +777,12 @@ sudo chmod -R 777 storage bootstrap/cache
4. 像之前一样使用 LaraDock: `docker-compose up -d nginx mysql`.
**说明:** 如果你面临任何上面的问题的最后一步:重建你所有的容器
`docker-compose build --no-cache`
```bash
docker-compose build --no-cache
```
"警告:容器数据可能会丢失!"
<br>
## 贡献
这个小项目是由一个有一个全职工作和很多的职责的人建立的,所以如果你喜欢这个项目,并且发现它需要一个 bug 修复或支持或新软件或升级任何容器,或其他任何. . 你是非常欢迎,欢迎毫不不犹豫地贡献吧:)

View File

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

View File

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