Laradock 使用說明 ---- 不是很詳細

前言

我同事告訴我他的windows電腦裝不上homestead,我已經有了在windwos下面折騰vagrant+virtual box+homestead的慘痛經驗,而後偶然打開百度搜索了一下Laravel docker,嗯,不錯,找到了Laradock。搞起來,怕啥!php

個人慘痛經驗

Vagrant+Virtual box+HomesteadLaravel項目開發中大多數人的標配,或者說是Web開發本地環境的標配(還在使用XAMPP, Phpstudy等等,諸如此類的開發環境的人,請認真看:-D)。
可是若是是在Linux下使用的話,問題不是很大,體驗仍是很完美的,也就搞定文件掛載,搞定公網私網IP,忍受漫長的啓動過程。
可是在Windows下面,簡直不要太難受,具體怎麼難受,我大概是忘記了,可是依稀還記得,怎麼裝也裝不上,怎麼啓動也報錯,確定是有的。再或者須要安裝個其餘的軟件,好比,ElasticSearch 還須要手動安裝。
被這些事情搞到放棄的人,我也相信是有的。廢話少說,下面咱們來看看如何使用Laradock。mysql

爲何要用?

這個問題問得好,首先,你不以爲這年頭不懂Docker就像鄉下來的?其次,本身百度一下什麼是Docker,Docker都有哪些優勢。總之,不用Laradock那就是和本身過不去。nginx

Laradock

基本狀況

圖片描述

安裝

  • 自行解決Docker安裝,此處給個文檔:Install
  • Linux:laravel

    1. git clone https://github.com/Laradock/laradock.git
    2. cd laradock
    3. cp env-example .env
    4. docker-compose up -d nginx mysql phpmyadmin redis workspace
    5. 到這先停一停
  • Windows:git

    • 和Linux差很少

注: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

  1. cd laradock
  2. docker-compose exec --user=laradock workspace bash (爲何要加--user = laradock,是由於權限問題)
  3. composer create-project --prefer-dist laravel/laravel blog 文檔:安裝Laravel,推薦使用 composer安裝
    注:composer config -g repo.packagist composer https://packagist.phpcomposer.com Composer 中國鏡像
  4. 內容比較多,看下面的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屢次也沒用)等等這些問題,咱們單獨討論

運行項目

  1. 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
  2. 讓你的Nginx容器加載你的配置

    # 在Laradock目錄下
    docker-compose exec nginx nginx -t
    docker-compose exec nginx nginx -s reload
  3. 綁定Host

    sudo vim etc/hosts
    # ADD 
    127.0.0.1  blog.com
  4. 打開瀏覽器,訪問 blog.com
    clipboard.png
  5. 測試數據庫連接,

    • 進入 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

      clipboard.png

  6. 測試 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');
      }
    • 完成註冊,查看Redis 記錄

      clipboard.png

OK,至此,咱們就已經搞定運行項目了。

Laradock Mysql的一些事

  1. 如何修改默認用戶名,默認數據庫

    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

    圖一

  2. 如何建立數據庫

    # 手動 (通常是這種方式)
    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

至此,就差很少了,遇到問題,歡迎留言!

相關文章
相關標籤/搜索