我同事告诉我他的windows电脑装不上homestead,我已经有了在windwos下面折腾vagrant+virtual box+homestead的惨痛经验,而后偶然打开百度搜索了一下Laravel docker,嗯,不错,找到了Laradock。搞起来,怕啥!php
Vagrant+Virtual box+Homestead是Laravel项目开发中大多数人的标配,或者说是Web开发本地环境的标配(还在使用XAMPP, Phpstudy等等,诸如此类的开发环境的人,请认真看:-D)。
可是若是是在Linux下使用的话,问题不是很大,体验仍是很完美的,也就搞定文件挂载,搞定公网私网IP,忍受漫长的启动过程。
可是在Windows下面,简直不要太难受,具体怎么难受,我大概是忘记了,可是依稀还记得,怎么装也装不上,怎么启动也报错,确定是有的。再或者须要安装个其余的软件,好比,ElasticSearch 还须要手动安装。
被这些事情搞到放弃的人,我也相信是有的。废话少说,下面咱们来看看如何使用Laradock。mysql
这个问题问得好,首先,你不以为这年头不懂Docker就像乡下来的?其次,本身百度一下什么是Docker,Docker都有哪些优势。总之,不用Laradock那就是和本身过不去。nginx
Linux:laravel
git clone https://github.com/Laradock/laradock.git
cd laradock
cp env-example .env
docker-compose up -d nginx mysql phpmyadmin redis workspace
Windows:git
注:Windows用户可能会遇到一个执行startup.sh
这个文件失败的问题,致使nginx
容器启动不了,不要怕,我已经遇到过了。Github Issue
解决办法以下:github
vim nginx/Dockerfile # 把下面这两行注释掉 ADD ./startup.sh /opt/startup.sh CMD ["/bin/bash", "/opt/startup.sh"] # 改为 CMD ["nginx"] # 暂时关闭 `Nginx SSl` 功能
官网介绍了三种使用方式,咱们呢只考虑最后一种,多个项目共用一个Laradock,可是,我会把整个安装遇到的问题都给你说明白。
假设:咱们有一台刚刚装好系统,Docker,Git的电脑。redis
为何把建立项目放到第一个来讲,是由于能够避免研究时,无项目可用。sql
cd laradock
docker-compose exec --user=laradock workspace bash
(为何要加--user = laradock,是由于权限问题)composer create-project --prefer-dist laravel/laravel blog
文档:安装Laravel,推荐使用 composer安装composer config -g repo.packagist composer https://packagist.phpcomposer.com
Composer 中国镜像 内容比较多,看下面的shelldocker
# 此时在workspace bash中 cd blog vim .env # 修改Mysql && Redis连接 DB_HOST=mysql REDIS_HOST=redis # 修改数据库和用户名:由于咱们若是看一下 laradock/.env 文件,咱们就会知道默认以下所示: MYSQL_VERSION=latest MYSQL_DATABASE=default MYSQL_USER=default MYSQL_PASSWORD=secret MYSQL_PORT=3306 # 至于如何修改为Homestead:Homestead,或者说,改了没效果(我不会告诉你,我改了N屡次也没用)等等这些问题,咱们单独讨论
Nginx 配置shell
# 从新开一个终端,也能够先退出workspace bash cd nginx/sites/ cp laravel.conf.example xxx.conf vim blog.conf # 修改Server name && root && Log Path :这个你本身应该能搞定 server_name blog.com; root /var/www/blog/public; ... error_log /var/log/nginx/blog_error.log; access_log /var/log/nginx/blog_access.log; # 注意root只修改/var/www/blog/public
让你的Nginx容器加载你的配置
# 在Laradock目录下 docker-compose exec nginx nginx -t docker-compose exec nginx nginx -s reload
绑定Host
sudo vim etc/hosts # ADD 127.0.0.1 blog.com
测试数据库连接,
docker-compose exec --user=laradock workspace bash
cd blog
php artisan make:auth
php artisan migrate
报错了,GitHub Issue,解决办法以下:GitHub Issue
cd laradock # 打开mysql/my.cnf vim mysql/my.cnf # 增长以下内容: # default_authentication_plugin=mysql_native_password # 执行以下命令 docker-compose down # 删除 laradock/.env 文件中 `DATA_PATH_HOST` 变量指定的目录下的文件(不删除,如何build都不起做用) sudo rm -rf ~/.laradock/data docker-compose up -d nginx mysql phpmyadmin redis workspace docker-compose exec --user=laradock workspace bash cd xxxx php artisan migrate
测试 Redis 连接 Laravel Redis
composer require predis/predis
在Home控制器添加Redis set方法
# use Illuminate\Support\Facades\Redis; public function index() { Redis::set('test', 'test'); return view('home'); }
OK,至此,咱们就已经搞定运行项目了。
如何修改默认用户名,默认数据库
cd laradock vim .env # 修改 `MYSQL_DATABASE` && `MYSQL_USER` 如 图 1 # 删除 laradock/.env 文件中 `DATA_PATH_HOST` 变量指定的目录下的文件 docker-compose down sudo rm -rf ~/.laradock/data docker-compose up -d nginx mysql phpmyadmin redis workspace
如何建立数据库
# 手动 (通常是这种方式) cd laradock/mysql/docker-entrypoint-initdb.d cp createdb.sql.example createdb.sql vim createdb.sql # 删除注释 CREATE DATABASE IF NOT EXISTS `blog` COLLATE 'utf8_general_ci' ; GRANT ALL ON `blog`.* TO 'homestead'@'%' ; FLUSH PRIVILEGES ; cd laradock docker-compose exec mysql bash mysql -u root -p < /docker-entrypoint-initdb.d/createdb.sql # 自动是有条件的,条件以下: # this sql script will auto run when the mysql container starts and the $DATA_PATH_HOST/mysql not found. (试过了,不删除`DATA_PATH_HOST`是不会执行滴)
Ubuntu elasticsearch max virtual memory areas vm.max_map_count [65530] is too low, increase to at le
# 切换到root用户修改配置sysctl.conf vi /etc/sysctl.conf # 添加下面配置: vm.max_map_count=655360 # 执行命令 sysctl -p 从新启动elasticsearch
至此,就差很少了,遇到问题,欢迎留言!