我同事告訴我他的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
至此,就差很少了,遇到問題,歡迎留言!