laradock 記錄

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

例子:運行 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命令中加上它們.

2 - 進入 Workspace 容器, 執行像 (Artisan, Composer, PHPUnit, Gulp, ...)等命令

docker-composeexecworkspace bash

增加--user=laradock(例如docker-compose exec --user=laradock workspace bash) 作為您的主機的用戶創建的文件. (你可以從docker-compose.yml修改 PUID (User id) 和 PGID (group id) 值 ).

3 - 編輯 Laravel 的配置.

如果你還沒有安裝 Laravel 項目,請查看How to Install Laravel in a Docker Container.

打開 Laravel 的.env文件 然后 配置 你的mysql的DB_HOST:

DB_HOST=mysql

4 - 打開瀏覽器訪問 localhost (http://localhost/).

調試: 如果你碰到任何問題,請查看調試章節 如果你需要特別支持,請聯系我,更多細節在幫助 & 問題章節

文檔

[Docker]

列出正在運行的容器

docker ps

你也可以使用以下命令查看某項目的容器

docker-compose ps

關閉所有容器

docker-compose stop

停止某個容器:

docker-compose stop {容器名稱}

刪除所有容器

docker-compose down

小心這個命令,因為它也會刪除你的數據容器。(如果你想保留你的數據你應該在上述命令后列出容器名稱刪除每個容器本身):*

進入容器 (通過 SSH 進入一個運行中的容器)

1 - 首先使用docker ps命令查看正在運行的容器

2 - 進入某個容器使用:

docker-composeexec{container-name} bash

例如: 進入 MySQL 容器

docker-composeexecmysql bash

3 - 退出容器, 鍵入exit.

編輯默認容器配置

打開docker-compose.yml然后 按照你想的修改.

例如:

修改 MySQL 數據庫名稱:

environment:MYSQL_DATABASE:laradock

修改 Redis 默認端口為 1111:

ports:? ? -"1111:6379"

編輯 Docker 鏡像

1 - 找到你想修改的鏡像的Dockerfile,

例如:mysql在mysql/Dockerfile.

2 - 按你所要的編輯文件.

3 - 重新構建容器:

docker-compose build mysql

更多信息在容器重建中點擊這里.

建立/重建容器

如果你做任何改變Dockerfile確保你運行這個命令,可以讓所有修改更改生效:

docker-compose build

選擇你可以指定哪個容器重建(而不是重建所有的容器):

docker-compose build {container-name}

如果你想重建整個容器,你可能需要使用--no-cache選項 (docker-compose build --no-cache {container-name}).

增加更多軟件 (Docker 鏡像)

為了增加鏡像(軟件), 編輯docker-compose.yml添加容器細節, 你需要熟悉docker compose 文件語法.

查看日志文件

Nginx的日志在logs/nginx目錄

然后查看其它容器日志(MySQL, PHP-FPM,...) 你可以運行:

docker logs {container-name}

[Laravel]

從 Docker 鏡像安裝 Laravel

1 - 首先你需要進入 Workspace 容器.

2 - 安裝 Laravel.

例如 使用 Composer

composer create-project laravel/laravel my-cool-app"5.2.*"

我們建議使用composer create-project替換 Laravel 安裝器去安裝 Laravel.

關于更多 Laravel 安裝內容請點擊這兒.

3 - 編輯docker-compose.yml映射新的應用目錄: 系統默認 Laradock 假定 Laravel 應用在 laradock 的父級目錄中

更新 Laravel 應用在my-cool-app目錄中, 我們需要用../my-cool-app/:/var/www替換../:/var/www, 如下:

application:build:./applicationvolumes:? ? ? ? ? ? -../my-cool-app/:/var/www

4 - 進入目錄下繼續工作..

cdmy-cool-app

5 - 回到 Laradock 安裝步驟,看看如何編輯.env的文件。

運行 Artisan 命令

你可以從 Workspace 容器運行 artisan 命令和其他終端命令

1 - 確認 Workspace 容器已經運行.

docker-compose up -d workspace // ..and all your other containers

2 - 找到 Workspace 容器名稱:

docker-compose ps

3 - 進入 Workspace 容器:

docker-composeexecworkspace bash

增加--user=laradock(例如docker-compose exec --user=laradock workspace bash) 作為您的主機的用戶創建的文件.

4 - 運行任何你想的 :)

php artisan

composer update

phpunit

使用 Redis

1 - 首先務必用docker-compose up命令運行 (redis) 容器.

docker-compose up -d redis

2 - 打開你的Laravel的.env文件 然后 配置redis的REDIS_HOST

REDIS_HOST=redis

如果在你的.env文件沒有找到REDIS_HOST變量。打開數據庫配置文件config/database.php然后用redis替換默認 IP127.0.0.1,例如:

'redis'=>['cluster'=>false,'default'=>['host'=>'redis','port'=>6379,'database'=>0,],],

3 - 啟用 Redis 緩存或者開啟 Session 管理也在.env文件中用redis替換默認file設置CACHE_DRIVER和SESSION_DRIVER

CACHE_DRIVER=redis

SESSION_DRIVER=redis

4 - 最好務必通過 Composer 安裝predis/predis包(~1.0):

composer require predis/predis:^1.0

5 - 你可以用以下代碼在 Laravel 中手動測試:

\Cache::store('redis')->put('Laradock','Awesome',10);

使用 Mongo

1 - 首先在 Workspace 和 PHP-FPM 容器中安裝mongo:

a) 打開 `docker-compose.yml` 文件

b) 在 Workspace 容器中找到 `INSTALL_MONGO` 選項:

c) 設置為 `true`

d) 在 PHP-FPM 容器中找到 `INSTALL_MONGO`

e) 設置為 `true`

相關配置項如下:

workspace:build:context:./workspaceargs:? ? ? ? ? ? ? ? -INSTALL_MONGO=true...php-fpm:build:context:./php-fpmargs:? ? ? ? ? ? ? ? -INSTALL_MONGO=true...

2 - 重建Workspace、PHP-FPM容器

docker-compose build workspace php-fpm

3 - 使用docker-compose up命令運行 MongoDB 容器 (mongo)

docker-compose up -d mongo

4 - 在config/database.php文件添加 MongoDB 的配置項:

'connections'=>['mongodb'=>['driver'=>'mongodb','host'=>env('DB_HOST','localhost'),'port'=>env('DB_PORT',27017),'database'=>env('DB_DATABASE','database'),'username'=>'','password'=>'','options'=>['database'=>'',]],//...],

5 - 打開 Laravel 的.env文件然后更新以下字段:

設置DB_HOST為mongo的主機 IP.

設置DB_PORT為27017.

設置DB_DATABASE為database.

6 - 最后務必通過 Composer 安裝jenssegers/mongodb包,添加服務提供者(Laravel Service Provider)

composer require jenssegers/mongodb

更多細節內容點擊這兒.

7 - 測試:

首先讓你的模型繼承 Mongo 的 Eloquent Model. 查看文檔.

進入 Workspace 容器.

遷移數據庫php artisan migrate.

[PHP]

安裝 PHP 拓展

安裝 PHP 擴展之前,你必須決定你是否需要FPM或CLI,因為他們安裝在不同的容器上,如果你需要兩者,則必須編輯兩個容器。

PHP-FPM 拓展務必安裝在php-fpm/Dockerfile-XX.(用你 PHP 版本號替換 XX).

PHP-CLI 拓展應該安裝到workspace/Dockerfile.

修改 PHP-FPM 版本

默認運行PHP-FPM 7.0版本.

PHP-FPM 負責服務你的應用代碼,如果你是計劃運行您的應用程序在不同 PHP-FPM 版本上,則不需要更改 PHP-CLI 版本。

A) 切換版本 PHP7.0到 PHP5.6

1 - 打開docker-compose.yml。

2 - 在PHP容器的Dockerfile-70文件。

3 - 修改版本號, 用Dockerfile-56替換Dockerfile-70, 例如:

php-fpm:

build:

context: ./php-fpm

dockerfile: Dockerfile-70

4 - 最后重建PHP容器

docker-compose build php

更多關于PHP基礎鏡像, 請訪問PHP Docker官方鏡像.

B) 切換版本 PHP7.0或5.6到 PHP5.5

我們已不在本地支持 PHP5.5,但是你按照以下步驟獲取:

1 - 克隆https://github.com/laradock/php-fpm.

2 - 重命名Dockerfile-56為Dockerfile-55.

3 - 編輯文件FROM php:5.6-fpm為FROM php:5.5-fpm.

4 - 從Dockerfile-55構建鏡像.

5 - 打開docker-compose.yml文件.

6 - 將php-fpm指向你的Dockerfile-55文件.

修改 PHP-CLI 版本

默認運行PHP-CLI 7.0版本

說明: PHP-CLI 只用于執行 Artisan 和 Composer 命令,不服務于你的應用代碼,這是 PHP-FPM 的工作,所以編輯 PHP-CLI 的版本不是很重要。 PHP-CLI 安裝在 Workspace 容器,改變 PHP-CLI 版本你需要編輯workspace/Dockerfile. 現在你必須手動修改 PHP-FPM 的Dockerfile或者創建一個新的。 (可以考慮貢獻功能).

安裝 xDebug

1 - 首先在 Workspace 和 PHP-FPM 容器安裝xDebug:

a) 打開 `docker-compose.yml` 文件

b) 在 Workspace 容器中找到 `INSTALL_XDEBUG` 選項

c) 改為 `true`

d) 在 PHP-FPM 容器中找到 `INSTALL_XDEBUG ` 選項

e) 改為 `true`

例如:

workspace:build:context:./workspaceargs:? ? ? ? ? ? ? ? -INSTALL_XDEBUG=true...php-fpm:build:context:./php-fpmargs:? ? ? ? ? ? ? ? -INSTALL_XDEBUG=true...

2 - 重建容器docker-compose build workspace php-fpm

[Misc]

使用自定義域名 (替換 Docker 的 IP)

假定你的自定義域名是laravel.dev

1 - 打開/etc/hosts文件添加以下內容,映射你的 localhost 地址127.0.0.1為laravel.dev域名

127.0.0.1? ? laravel.dev

2 - 打開你的瀏覽器訪問{http://laravel.dev}

你可以在 nginx 配置文件自定義服務器名稱,如下:

server_name laravel.dev;

安裝全局 Composer 命令

為啟用全局 Composer Install 在容器構建中允許你安裝 composer 的依賴,然后構建完成后就是可用的。

1 - 打開docker-compose.yml文件

2 - 在 Workspace 容器找到COMPOSER_GLOBAL_INSTALL選項并設置為true

例如:

workspace:build:context:./workspaceargs:? ? ? ? ? ? ? ? -COMPOSER_GLOBAL_INSTALL=true...

3 - 現在特價你的依賴關系到workspace/composer.json

4 - 重建 Workspace 容器docker-compose build workspace

安裝 Prestissimo

Prestissimo是一個平行安裝功能的 composer 插件。

1 - 在安裝期間,使全局 Composer Install 正在運行:

點擊這個 [啟用全局 Composer 構建安裝](#Enable-Global-Composer-Build-Install) 然后繼續步驟1、2.

2 - 添加 prestissimo 依賴到 Composer:

a - 現在打開workspace/composer.json文件

b - 添加"hirak/prestissimo": "^0.3"依賴

c - 重建 Workspace 容器docker-compose build workspace

安裝 Node + NVM

在 Workspace 容器安裝 NVM 和 NodeJS

1 - 打開docker-compose.yml文件

2 - 在 Workspace 容器找到INSTALL_NODE選項設為true

例如:

workspace:build:context:./workspaceargs:? ? ? ? ? ? ? ? -INSTALL_NODE=true...

3 - 重建容器docker-compose build workspace

Debugging

這里是你可能面臨的常見問題列表,以及可能的解決方案.

看到空白頁而不是 Laravel 的歡迎頁面!

在 Laravel 根目錄,運行下列命令:

sudo chmod -R 777 storage bootstrap/cache

看到 "Welcome to nginx" 而不是 Laravel 應用!

在瀏覽器使用http://127.0.0.1替換http://localhost.

看到包含address already in use的錯誤

確保你想運行的服務端口(80, 3306, etc.)不是已經被其他程序使用,例如apache/httpd服務或其他安裝的開發工具

Laradock 升級

從 Docker Toolbox (VirtualBox) 移動到 Docker Native (for Mac/Windows),需要從 Laradock v3.* 升級到 v4.*:

停止 Docker 虛擬機docker-machine stop {default}

安裝 DockerMacWindows.

升級 Laradock 到v4.*.*(git pull origin master)

像之前一樣使用 Laradock:docker-compose up -d nginx mysql.

說明:如果你面臨任何上面的問題的最后一步:重建你所有的容器

docker-compose build --no-cache

"警告:容器數據可能會丟失!"

貢獻

這個小項目是由一個有一個全職工作和很多的職責的人建立的,所以如果你喜歡這個項目,并且發現它需要一個 bug 修復或支持或新軟件或升級任何容器,或其他任何. . 你是非常歡迎,歡迎毫不不猶豫地貢獻吧:)

閱讀我們的貢獻說明

幫助 & 問題

從聊天室Gitter社區獲取幫助和支持.

你也可以打開 Github 上的issue(將被貼上問題和答案) 或與大家討論Gitter.

Docker 或 Laravel 的特別幫助,你可以在Codementor.io上直接和項目創始人在線溝通

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容