LaraDocker 在Docker中轻松运行你的laravel项目
除了Homestead 我们是不是可以考虑将我们的laravel应用运行在Docker. LaraDocker无疑是一个不错的解决方案
什么是Docker
Docker
是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs
(虚拟机)、bare
metal
、OpenStack
集群和其他的基础应用平台。
Docker vs Vagrant
从时间上来看,Vagrant
启动虚拟机需要数分钟,而Docker
只需数秒;从体量上来看,Vagrant
提供的是完整的虚拟机,而Docker
提供的是轻量级的虚拟容器,
这些虚拟容器共享同一个内核并且允许在独立进程中运行;此外,从应用范围来说,Vagrant
只能用于开发环境,而Docker
即可用于开发环境也可用于生产环境。
如果是在Linux
可以查看这个文章使用 docker 部署你的 Laravel 项目
Docker 优势
比起Homestead
、Vagrant
,Docker
的优势是轻量级,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器
安装准备
在进行开发环境的搭建之前(laravel
环境已经安装完毕) 我们需要准备下面几个
我们可以使用以下命令创建一个Docker
虚拟机
$ docker-machine create --driver=virtualbox default
这样的话我们在virtual box
就会新建一个虚拟机
我们可以去查看Docker IP
的地址
在hosts
文件里映射我们的ip
地址
192.168.99.100 laravel.dev
接下来就是安装LaraDock
如果系统尚未安装Laravel
应用,需要从头开始搭建全新的环境,可以在系统任意位置克隆Github
仓库到本地:
$ git clone https://github.com/LaraDock/laradock.git
这里我已经安装好了一个laravel
项目 那么我在这个项目的根目录下下载就好
在项目的根目录 之前已经安装好了Laradock
进入该目录执行(和laravel
项目一样)
$ cp env-example .env
因为之前我们已经将ip
做了映射 所以别忘了在laravel
的.env
文件中修改相应的配置
DB_HOST=laravel.dev
REDIS_HOST=laravel.dev
最后运行容器
$ 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
命令中加上它们
启动之后,进入workspace
容器,执行Laravel
安装及Artisan
命令等操作:
$ docker-compose exec —user=laradock workspace bash
这时候可能出现问题:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)
解决办法就是 修改mimetypes.py
文件,路径位于python
的安装路径下的Lib\mimetypes.py
文件。在import
下添加如下几行:
if sys.getdefaultencoding() != 'gbk':
reload(sys)
sys.setdefaultencoding('gbk')
去访问http://laravel.dev
应该就可以访问得到首页了