LaraDocker 在Docker中轻松运行你的laravel项目

除了Homestead 我们是不是可以考虑将我们的laravel应用运行在Docker. LaraDocker无疑是一个不错的解决方案

什么是Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metalOpenStack 集群和其他的基础应用平台。

Docker vs Vagrant

从时间上来看,Vagrant启动虚拟机需要数分钟,而Docker只需数秒;从体量上来看,Vagrant提供的是完整的虚拟机,而Docker提供的是轻量级的虚拟容器,

这些虚拟容器共享同一个内核并且允许在独立进程中运行;此外,从应用范围来说,Vagrant只能用于开发环境,而Docker即可用于开发环境也可用于生产环境。

如果是在Linux可以查看这个文章使用 docker 部署你的 Laravel 项目

Docker 优势

比起HomesteadVagrantDocker的优势是轻量级,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器

安装准备

在进行开发环境的搭建之前(laravel环境已经安装完毕) 我们需要准备下面几个

我们可以使用以下命令创建一个Docker虚拟机

1
$ docker-machine create --driver=virtualbox default

这样的话我们在virtual box就会新建一个虚拟机
1

我们可以去查看Docker IP的地址
2

hosts文件里映射我们的ip地址

1
2
3
4
5
6
7
8
192.168.99.100 laravel.dev
```

接下来就是安装`LaraDock`

如果系统尚未安装`Laravel`应用,需要从头开始搭建全新的环境,可以在系统任意位置克隆`Github`仓库到本地:
```shell
$ git clone https://github.com/LaraDock/laradock.git

这里我已经安装好了一个laravel项目 那么我在这个项目的根目录下下载就好

在项目的根目录 之前已经安装好了Laradock 进入该目录执行(和laravel项目一样)

1
$ cp env-example .env

因为之前我们已经将ip做了映射 所以别忘了在laravel.env文件中修改相应的配置

1
2
DB_HOST=laravel.dev
REDIS_HOST=laravel.dev

最后运行容器

1
$ docker-compose up -d nginx mysql

当然该容器里也包含了其他的应用服务 如(你可以选择性的启动他们)

1
nginx, hhvm, php-fpm, mysql, redis, postgres, mariadb, neo4j, mongo, apache2, caddy, memcached, beanstalkd, beanstalkd-console, workspace

workspacephp-fpm 将运行在大部分实例中, 所以不需要在 up 命令中加上它们

启动之后,进入workspace容器,执行Laravel安装及Artisan命令等操作:

1
$ docker-compose exec —user=laradock workspace bash

这时候可能出现问题:

1
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)

解决办法就是 修改mimetypes.py文件,路径位于python的安装路径下的Lib\mimetypes.py文件。在import下添加如下几行:

1
2
3
if sys.getdefaultencoding() != 'gbk': 
reload(sys)
sys.setdefaultencoding('gbk')

去访问http://laravel.dev应该就可以访问得到首页了

相关链接