- _nosay
使用docker安装laravel运行环境
2017-09-13 14:54:29
当然把docker安装完成还是远远不够的,我们需要使用docker创建一个lnmp的环境出来,以供laravel使用。
在安装环境之前,我们需要安装一个docker利器,Docker Compose。
Docker Composer是什么?
Docker Composer允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。
Compose中有两个重要的概念:
1.服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
2.项目(project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。
Compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose项目由Python编写,实现上调用了Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持DockerAPI,就可以在其上利用Compose来进行编排管理。
安装:
sudo pip install -U docker-compose
安装Laradock,什么时Laradock:
Laradock 是为 Docker 提供的完整 PHP 本地开发环境,和 Homestead 一样提供了一系列打包好(包括配置)的 Docker Image。Laradock 早期专注为 Laravel 打造 Docker 开发环境,因而最早在 Laravel 社区中出名,后来随着影响力的扩大,逐渐被 PHP 社区接纳和采用,目前支持的 PHP 项目除了 Laravel 之外,还有 Symfony、CodeIgniter、WordPress、Drupal 等等。
git clone https://github.com/Laradock/laradock.git
进入laradock目录,将env-example重命名为 .env:
cp env-example .env
运行容器
docker-compose up -d nginx mysql redis beanstalkd
这一步希望你已经装了加速器...
安装完以后,执行命令登陆终端
docker-compose exec --user=laradock workspace bash
看到熟悉的命令行,是否很是happy呢
我们在/var/www目录下安装一个laravel
composer create-project laravel/laravel blog
然后我们需要到 laradock
下编辑 .env
中的 APPLICATION
配置项:
APPLICATION=../wwwroot/
这样就相当于为 wwwroot 与 Docker 的 /var/www 目录建立了软链接,然后我们修改laradock/nginx/sites/default.conf 中的映射关系。 重启nginx
docker-compose up -d nginx
我注意到使用此命令
docker-compose up -d nginx mysql redis beanstalkd
然后执行
docker-compose ps
发现mysql是没有启动起来的,查询日志发现报错信息:
mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
去github反馈区发现,很多人都遇到过此问题,应该属于一个bug,临时解决:
1.打开docker-compose.yml文件
2.在219行注释掉 user: "1000:50"
3.重启
然后我们需要登陆mysql建立相关数据库以及授权用户。默认的用户为root,密码也为root.
docker-compose exec mysql bash
创建laravel默认用户以及数据库,并授权
mysql -uroot -proot create database homestead character set utf8; GRANT ALL ON *.* TO homestead@'localhost' IDENTIFIED BY 'secret';