基于 LaraDock 在 Docker 中快速构建 Laravel 应用系列教程 —— 搭建开发环境

laradock

1、开始之前

LaraDock简介

LaraDock致力于简化创建开发环境过程,能够帮你在Docker上快速搭建Laravel应用。 就像Laravel Homestead一样,只不过用Docker替换了Vagrant。它预包装了Docker镜像,为我们提供了一站式的开发环境,而不需要再去在本地机器安装PHP、Nginx、MySQL以及其他任何开发过程中需要的软件。

支持的软件

  • 数据库引擎:
    • MySQL
    • PostgreSQL
    • MariaDB
    • MongoDB
    • Neo4j
  • 缓存引擎:
    • Redis
    • Memcached
  • PHP 服务器:
    • NGINX
    • Apache2
    • Caddy
  • PHP 编译工具:
    • PHP-FPM
    • HHVM
  • 消息队列系统:
    • Beanstalkd (+ Beanstalkd Console)
  • 工具:
    • Workspace (PHP7-CLI, Composer, Git, Node, Gulp, SQLite, Vim, Nano, cURL...) >如果你找不到你需要的软件,构建它然后把它添加到这个列表。

什么是Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker vs Vagrant

从时间上来看,Vagrant启动虚拟机需要数分钟,而Docker只需数秒;从体量上来看,Vagrant提供的是完整的虚拟机,而Docker提供的是轻量级的虚拟容器,这些虚拟容器共享同一个内核并且允许在独立进程中运行;此外,从应用范围来说,Vagrant只能用于开发环境,而Docker即可用于开发环境也可用于生产环境。

LaraDock vs Homestead

类比Docker和Vagrant,LaraDock和Homestead都能够为我们提供完整的虚拟开发环境,LaraDock是用于管理控制Docker的工具,而Homestead是用于管理控制完整虚拟机(如VirtualBox+Ubuntu)的工具,LaraDock运行速度比Homestead更快。

2、环境搭建

讲完了上面的概念和术语,下面我们进入实战,开始基于LaraDock在本地安装开发环境。

依赖

安装之前,需要确保系统已经安装这两个软件:

安装LaraDock

如果系统尚未安装Laravel应用,需要从头开始搭建全新的环境,可以在系统任意位置克隆Github仓库到本地:

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

如果之前已经安装了Laravel,也可以在Laravel应用根目录下克隆上述Github仓库代码。

安装Laravel应用

进入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

注:workspace 和 php-fpm 将运行在大部分实例中, 所以不需要在 up 命令中加上它们。

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

docker-compose exec —user=laradock workspace bash

我们以laradock用户的身份进入容器。

进入容器后,执行以下命令安装Laravel:

composer create-project laravel/laravel coolapp

安装完成后,编辑laradock目录下的docker-compose.yml文件修改目录映射(系统默认假定Laravel应用在LaraDock的父级目录中),我们需要用 ../my-cool-app/:/var/www替换 ../:/var/www

application:
build: ./application
volumes:
    - ../coolapp/:/var/www

接下来进入coolapp目录编辑.env的数据库配置:

DB_HOST=mysql

至此,基本安装及配置已经完成,我们在浏览器中访问http://localhost/,即可看到如下页面:

laravel-preview

是不是很方便快捷?

下一节我们将继续探讨Docker的一些常用操作以及Laravel项目关联软件和命令的使用。

LaraDock系列教程:

注:如遇任何问题,请访问 http://laravelacademy.org/post/7691.html,以这篇教程为准。

学院君 has written 980 articles

Laravel学院院长,终身学习者

积分:112492 等级:P12 职业:手艺人 城市:杭州

87 条回复

  1. tiandaye tiandaye says:

    win7 下,使用 docker toolbox 安装的 laradock 使用 localhost 访问不了页面,使用 docker-compose ps 命令查看服务都 up 的。

  2. 年糕大侠 年糕大侠 says:
    简单说两句:毕竟docker我也不是太懂,怕也有跟我一样不太懂原理,或者更浅显的 : 服务起来了, 没有找到该改哪里,然后一直404。 1. 首先,两个文件,都是在laradock目录下面的:一个是.env 一个是docker-compose.yml 。两个是什么关系呢,首先.env 是 env-example的拷贝,里面呢,有很多以大写字母+下划线为配置名的配置项, 这个配置项呢,在docker-compose.yml 中 可以以${配置名} 的形式被使用。 2. 改哪里? 其实这时候,应该有点感觉了,你完全可以在.env 里面定义一个自己想定义的配置项,然后再docker-compose.yml里面引用,注意这个配置项表示的是项目目录,而且nginx默认的根目录配置的是(容器里)/var/www/public ,所以要注意相对的位置关系。另外,docker-compose.yml文件大概90多行的地方: - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} 这样总算跟文章说的地方对应上了。 3. 为什么改了没有反应 首先你可以docker-compose exec workspace bash 进去看看,目录的对应关系是不是对的。因为,你改了那些配置项,还要让他能够生效,这个跟php代码不一样,不是实时就有效果的。 试一下 docker-compose down 然后再重新docker-compose up 你需要的服务,这样workspace里面的文件及结构应该能够更新了,服务也重启了,就应该有效果了。
  3. www003195 www003195 says:
    我建了第一个个laravel项目,用localhost打开了它,然后又建了另一个laravel项目,用输入什么打开它?
  4. canghai canghai says:
    解决了,教程描述有误 docker-compose exec —user=laradock workspace bash 的 — 有问题 写成下面这个就ok了: docker-compose exec --user=laradock workspace bash
  5. canghai canghai says:
    docker-compose exec —user=laradock workspace bash ERROR: No such service: —user=laradock 请问这个如何解决?
  6. 我来自沧海 我来自沧海 says:
    嗯是的,谢谢学院君提供这么好的教程
  7. 我来自沧海 我来自沧海 says:
    比较难受的是要自备梯子。

登录后才能进行评论,立即登录?