通过d4m-nfs运行laradock,告别龟速的虚拟机

[TOC]

LaraDock能够帮你在Docker上快速搭建Laravel应用。
就像Laravel Homestead一样,但是Docker替换了Vagrant。

介绍

大家可以先看官方Laradock_README.md。使用方法很简单,让我们从此再也不需要使用Vagrant了。

特点

  • 在PHP版本:7.0,5.6.5.5...之中可以简单切换。
  • 可选择你最喜欢的数据库引擎,比如:MySQL, Postgres, MariaDB...
  • 可运行自己的软件组合,比如:Memcached, HHVM, Beanstalkd...
  • 所有软件运行在不同的容器之中,比如:PHP-FPM, NGINX, PHP-CLI...
  • 通过简单的编写dockerfile容易定制任何容器。
  • 所有镜像继承自一个官方基础镜像(Trusted base Images)
  • 可预配置Laravel的Nginx环境
  • 容易应用容器中的配置
  • 干净的结构化的Docker配置文件(dockerfile
  • 最新的Docker Compose 版本(docker-compose
  • 所有的都是可视化和可编辑的
  • 快速的镜像构建
  • 每周都会有更新...

通过Laradock我们可以很轻松的搭建开发环境,并且可以定制自己环境的需求,并共享出来,例如:nginx的配置环境,如果是团队开发Laradock将会帮助我们省去很多搭环境的工作,并保证大家的环境都是一样的。

Docker

Docker 是一个开源项目,自动化部署应用程序软件的容器,在Linux, Mac OS and Windows提供一个额外的抽象层和自动化的操作系统级的虚拟化。这部分内容大家去度娘、谷歌,这里复制官方简介。

开始使用LaraDock

安装

1 - 克隆 LaraDock 仓库:

A) 如果你已经有一个Laravel项目,克隆这个仓库在到Laravel根目录

git submodule add https://github.com/LaraDock/laradock.git

如果你不是使用Git管理Laravel项目,您可以使用 git clone 而不是git submodule

B) 如果你没有一个Laravel项目,你想Docker安装Laravel,克隆这个源在您的机器任何地方上:

git clone https://github.com/LaraDock/laradock.git

这里我建议使用B方法,全局安装

使用 (这里用mac作为例子)

官方文档有说明如果你正在使用Docker Toolbox (VM)基于VitrulBox创建的实例,建议更新到Docker Native

1 - 运行容器: (在运行docker-compose命令之前,确认你在 laradock 目录中

例子: 运行 NGINX 和 MySQL:

docker-compose up -d  nginx mysql

你可以从以下列表选择你自己的容器组合:

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

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

2 - 进入 Workspace 容器, 执行像 (Artisan, Composer, PHPUnit, Gulp, ...)等命令

docker-compose exec workspace bash

增加 --user=laradock (例如 docker-compose exec --user=laradock workspace bash) 作为您的主机的用户创建的文件. (你可以从 docker-compose.yml修改 PUID (User id) 和 PGID (group id) 值 ).

3 - 编辑 Laravel 的配置.

如果你还没有安装Laravel项目,请查看 How to Install Laravel in a Docker Container.

打开 Laravel的 .env 文件 然后 配置 你的mysqlDB_HOST:

DB_HOST=mysql

注意定义DB_HOST的时候一定要写成mysql,不然无法link到容器

4 - 打开浏览器访问localhost (http://localhost/).

127.0.0.1 www.youresite.com

建议修改host文件

关于Laradock 使用教程详情可以参考官方文档,这里就介绍到这里,但当你一切都准备好之后你会发现为什么跑起来这么慢,我第一次跑的时候也很纳闷,后来谷歌上查阅了很多资料后发现原来Laradock挂载的工作空间Workspace在docker内置的软虚拟机中,I/O性能很低,这就尴尬了,但幸好有解决的办法,下面介绍下d4m-nfs

安装D4m-nfs

d4m-nfs 是docker的一个扩展,通过他可以把docker的file sharing挂载到本地,因为我用的是mac所以这里只介绍mac的挂载方法

Step 1

Docker中打开Preferences, 点击File Sharing将其它目录全部删掉只保留/tmp目录

Alt text
Alt text

Step 2

克隆 d4m-nfs 到 ~目录下

git clone https://github.com/IFSight/d4m-nfs ~/d4m-nfs

Step 3

项目克隆下来后修改~/d4m-nfs/etc/d4m-nfs-mounts.txt文件,若文件不存在自己手动建一个

// 文档中加入下面挂载目录
/Users:/Users
/Volumes:/Volumes
/private:/private

Step 4

检查系统文件/etc/exports,编辑文件并清空所有内容,cat /etc/exports

# d4m-nfs exports
"/Users" -alldirs -mapall=0:0 localhost
"/Volumes" -alldirs -mapall=0:0 localhost
"/private" -alldirs -mapall=0:0 localhost

Step 5

~目录下运行脚本

~/d4m-nfs/d4m-nfs.sh

脚本运行后程序开始初始化最后终端会展示以下内容

....
Please note:
* To connect to the D4M moby linux VM use: screen -r d4m
* To disconnect from the D4M moby linux VM tty screen session use Ctrl-a d.
* To run d4m-nfs faster and/or offline, leave the files in d4m-apk-cache and the hello-world image.
* If you switch between D4M stable and beta, you might need to remove files in d4m-apk-cache and the hello-world image.


# Use Stable Docker for Mac channel
Currently d4m-nfs is known to work on 'Docker version 1.12.3' and does not work on Docker for Mac beta (1.13).  Please use the stable channel of Docker for Mac https://docs.docker.com/docker-for-mac/

# ionotify for Sublime users
If you use Sublime, please checkout the plugin by Yves to help with auto reloads on file changes - https://github.com/yvess/sublime_d4m

通过命令进入挂载目录的窗口

screen -r d4m

如果看到以下挂载项表示挂载成功

192.168.65.1:/Users/Lavekin /mnt nfs nolock,local_lock=all 0 0
192.168.65.1:/Users /Users nfs nolock,local_lock=all 0 0
192.168.65.1:/Volumes /Volumes nfs nolock,local_lock=all 0 0
192.168.65.1:/private /private nfs nolock,local_lock=all 0 0

Step 6

回到laradock目录下将你的容器跑起来

docker-compose up -d nginx redis mysql

Creating network "laradock_default" with the default driver
Creating laradock_redis_1
Creating laradock_applications_1
Creating laradock_mysql_1
Creating laradock_workspace_1
Creating laradock_php-fpm_1
Creating laradock_nginx_1

看到以上运行日志恭喜你已将容器跑起来并挂载到本地了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容