laradock 記錄

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

例子:運(yùn)行 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將運(yùn)行在大部分實(shí)例中, 所以不需要在up命令中加上它們.

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

docker-composeexecworkspace bash

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

3 - 編輯 Laravel 的配置.

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

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

DB_HOST=mysql

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

調(diào)試: 如果你碰到任何問題,請查看調(diào)試章節(jié) 如果你需要特別支持丑孩,請聯(lián)系我,更多細(xì)節(jié)在幫助 & 問題章節(jié)

文檔

[Docker]

列出正在運(yùn)行的容器

docker ps

你也可以使用以下命令查看某項(xiàng)目的容器

docker-compose ps

關(guān)閉所有容器

docker-compose stop

停止某個(gè)容器:

docker-compose stop {容器名稱}

刪除所有容器

docker-compose down

小心這個(gè)命令,因?yàn)樗矔h除你的數(shù)據(jù)容器李皇。(如果你想保留你的數(shù)據(jù)你應(yīng)該在上述命令后列出容器名稱刪除每個(gè)容器本身):*

進(jìn)入容器 (通過 SSH 進(jìn)入一個(gè)運(yùn)行中的容器)

1 - 首先使用docker ps命令查看正在運(yùn)行的容器

2 - 進(jìn)入某個(gè)容器使用:

docker-composeexec{container-name} bash

例如: 進(jìn)入 MySQL 容器

docker-composeexecmysql bash

3 - 退出容器, 鍵入exit.

編輯默認(rèn)容器配置

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

例如:

修改 MySQL 數(shù)據(jù)庫名稱:

environment:MYSQL_DATABASE:laradock

修改 Redis 默認(rèn)端口為 1111:

ports:? ? -"1111:6379"

編輯 Docker 鏡像

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

例如:mysql在mysql/Dockerfile.

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

3 - 重新構(gòu)建容器:

docker-compose build mysql

更多信息在容器重建中點(diǎn)擊這里.

建立/重建容器

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

docker-compose build

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

docker-compose build {container-name}

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

增加更多軟件 (Docker 鏡像)

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

查看日志文件

Nginx的日志在logs/nginx目錄

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

docker logs {container-name}

[Laravel]

從 Docker 鏡像安裝 Laravel

1 - 首先你需要進(jìn)入 Workspace 容器.

2 - 安裝 Laravel.

例如 使用 Composer

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

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

關(guān)于更多 Laravel 安裝內(nèi)容請點(diǎn)擊這兒.

3 - 編輯docker-compose.yml映射新的應(yīng)用目錄: 系統(tǒng)默認(rèn) Laradock 假定 Laravel 應(yīng)用在 laradock 的父級目錄中

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

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

4 - 進(jìn)入目錄下繼續(xù)工作..

cdmy-cool-app

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

運(yùn)行 Artisan 命令

你可以從 Workspace 容器運(yùn)行 artisan 命令和其他終端命令

1 - 確認(rèn) Workspace 容器已經(jīng)運(yùn)行.

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

2 - 找到 Workspace 容器名稱:

docker-compose ps

3 - 進(jìn)入 Workspace 容器:

docker-composeexecworkspace bash

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

4 - 運(yùn)行任何你想的 :)

php artisan

composer update

phpunit

使用 Redis

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

docker-compose up -d redis

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

REDIS_HOST=redis

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

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

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

CACHE_DRIVER=redis

SESSION_DRIVER=redis

4 - 最好務(wù)必通過 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` 選項(xiàng):

c) 設(shè)置為 `true`

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

e) 設(shè)置為 `true`

相關(guān)配置項(xiàng)如下:

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命令運(yùn)行 MongoDB 容器 (mongo)

docker-compose up -d mongo

4 - 在config/database.php文件添加 MongoDB 的配置項(xiàng):

'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文件然后更新以下字段:

設(shè)置DB_HOST為mongo的主機(jī) IP.

設(shè)置DB_PORT為27017.

設(shè)置DB_DATABASE為database.

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

composer require jenssegers/mongodb

更多細(xì)節(jié)內(nèi)容點(diǎn)擊這兒.

7 - 測試:

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

進(jìn)入 Workspace 容器.

遷移數(shù)據(jù)庫php artisan migrate.

[PHP]

安裝 PHP 拓展

安裝 PHP 擴(kuò)展之前,你必須決定你是否需要FPM或CLI,因?yàn)樗麄儼惭b在不同的容器上,如果你需要兩者,則必須編輯兩個(gè)容器璧帝。

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

PHP-CLI 拓展應(yīng)該安裝到workspace/Dockerfile.

修改 PHP-FPM 版本

默認(rèn)運(yùn)行PHP-FPM 7.0版本.

PHP-FPM 負(fù)責(zé)服務(wù)你的應(yīng)用代碼,如果你是計(jì)劃運(yùn)行您的應(yīng)用程序在不同 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

更多關(guān)于PHP基礎(chǔ)鏡像, 請?jiān)L問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構(gòu)建鏡像.

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

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

修改 PHP-CLI 版本

默認(rèn)運(yùn)行PHP-CLI 7.0版本

說明: PHP-CLI 只用于執(zhí)行 Artisan 和 Composer 命令,不服務(wù)于你的應(yīng)用代碼变勇,這是 PHP-FPM 的工作恤左,所以編輯 PHP-CLI 的版本不是很重要。 PHP-CLI 安裝在 Workspace 容器搀绣,改變 PHP-CLI 版本你需要編輯workspace/Dockerfile. 現(xiàn)在你必須手動修改 PHP-FPM 的Dockerfile或者創(chuàng)建一個(gè)新的飞袋。 (可以考慮貢獻(xiàn)功能).

安裝 xDebug

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

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

b) 在 Workspace 容器中找到 `INSTALL_XDEBUG` 選項(xiàng)

c) 改為 `true`

d) 在 PHP-FPM 容器中找到 `INSTALL_XDEBUG ` 選項(xiàng)

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文件添加以下內(nèi)容,映射你的 localhost 地址127.0.0.1為laravel.dev域名

127.0.0.1? ? laravel.dev

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

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

server_name laravel.dev;

安裝全局 Composer 命令

為啟用全局 Composer Install 在容器構(gòu)建中允許你安裝 composer 的依賴链患,然后構(gòu)建完成后就是可用的巧鸭。

1 - 打開docker-compose.yml文件

2 - 在 Workspace 容器找到COMPOSER_GLOBAL_INSTALL選項(xiàng)并設(shè)置為true

例如:

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

3 - 現(xiàn)在特價(jià)你的依賴關(guān)系到workspace/composer.json

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

安裝 Prestissimo

Prestissimo是一個(gè)平行安裝功能的 composer 插件。

1 - 在安裝期間麻捻,使全局 Composer Install 正在運(yùn)行:

點(diǎn)擊這個(gè) [啟用全局 Composer 構(gòu)建安裝](#Enable-Global-Composer-Build-Install) 然后繼續(xù)步驟1纲仍、2.

2 - 添加 prestissimo 依賴到 Composer:

a - 現(xiàn)在打開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選項(xiàng)設(shè)為true

例如:

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

3 - 重建容器docker-compose build workspace

Debugging

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

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

在 Laravel 根目錄,運(yùn)行下列命令:

sudo chmod -R 777 storage bootstrap/cache

看到 "Welcome to nginx" 而不是 Laravel 應(yīng)用!

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

看到包含address already in use的錯(cuò)誤

確保你想運(yùn)行的服務(wù)端口(80, 3306, etc.)不是已經(jīng)被其他程序使用贸毕,例如apache/httpd服務(wù)或其他安裝的開發(fā)工具

Laradock 升級

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

停止 Docker 虛擬機(jī)docker-machine stop {default}

安裝 DockerMacWindows.

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

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

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

docker-compose build --no-cache

"警告:容器數(shù)據(jù)可能會丟失!"

貢獻(xiàn)

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

閱讀我們的貢獻(xiàn)說明

幫助 & 問題

從聊天室Gitter社區(qū)獲取幫助和支持.

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

Docker 或 Laravel 的特別幫助崖咨,你可以在Codementor.io上直接和項(xiàng)目創(chuàng)始人在線溝通

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锻拘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌署拟,老刑警劉巖婉宰,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異推穷,居然都是意外死亡心包,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門馒铃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟹腾,“玉大人,你說我怎么就攤上這事区宇⊥拗常” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵议谷,是天一觀的道長炉爆。 經(jīng)常有香客問我,道長卧晓,這世上最難降的妖魔是什么芬首? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮逼裆,結(jié)果婚禮上郁稍,老公的妹妹穿的比我還像新娘。我一直安慰自己胜宇,他們只是感情好耀怜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掸屡,像睡著了一般封寞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仅财,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天狈究,我揣著相機(jī)與錄音,去河邊找鬼盏求。 笑死抖锥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碎罚。 我是一名探鬼主播磅废,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荆烈!你這毒婦竟也來了拯勉?” 一聲冷哼從身側(cè)響起竟趾,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宫峦,沒想到半個(gè)月后岔帽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡导绷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年犀勒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妥曲。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贾费,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出檐盟,到底是詐尸還是另有隱情褂萧,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布遵堵,位于F島的核電站箱玷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陌宿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一波丰、第九天 我趴在偏房一處隱蔽的房頂上張望壳坪。 院中可真熱鬧,春花似錦掰烟、人聲如沸爽蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝎亚。三九已至,卻和暖如春先馆,著一層夾襖步出監(jiān)牢的瞬間发框,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工煤墙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梅惯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓仿野,卻偏偏與公主長得像铣减,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子脚作,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容