雖然這篇叫Docker環(huán)境搭建,但是是用了一個別人寫好的配置文件,為什么要用別人寫好的呢?因?yàn)榈谝还?jié)省了我們學(xué)習(xí)的成本,類似一鍵安裝環(huán)境的東西。二節(jié)省了我們的構(gòu)造docker和測試docker的時間。三也省略了我們在去寫額外的服務(wù)器配置。
這里我選用LaraDock,因?yàn)樗娜萜鞫啵粌H僅用來作web服務(wù)器。LaraDock官網(wǎng)
以下,所說的文件夾和目錄是同一個意思,只不過不同的操作系統(tǒng)叫法不一樣而已。
1. 安裝前的準(zhǔn)備工作
- GIT
- Docker
這兩個各自的官網(wǎng)上都有,這就不多介紹了。安裝也比較方便,沒什么難點(diǎn)
2. Docker鏡像源更改
這里我們要更改下Docker源,不然會一直提示連接不了服務(wù)器,即便連接上也會下載巨慢。
這里我選擇DaoCloud
- 首先注冊DaoCloud號,只有注冊以后,才能用它的加速服務(wù),免費(fèi)的。所以我們要感謝DaoCloud的免費(fèi)。
- 訪問網(wǎng)址http://www.daocloud.io/mirror#accelerator-doc,上面有根據(jù)系統(tǒng)如何更改鏡像源,不復(fù)雜,很簡單就完成了(PS:這個網(wǎng)址必須在登錄的情況下才能訪問到,免費(fèi)的服務(wù),為了以后大家都用著舒心就支持下,注冊下)
(PS:如果你碰到提示
ERROR: Service 'mysql' failed to build: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.1:53: too many redirects
這個錯誤提示就是沒有連接上鏡像的服務(wù)器,多試幾次就好了)
3. 安裝LaraDock
這里以新項(xiàng)目為例,如果是在已有的項(xiàng)目的情況下,請參考LaraDock官方文檔
git clone https://github.com/Laradock/laradock.git
這里會下載一些docker配置文件,git下來后有個laradock目錄,里面有很多容器,到時候需要什么容器就加載什么容器就可以了,非常方便。
4. 修改docker鏡像配置文件
- 進(jìn)入剛剛git下來的laradock目錄
- 拷貝配置文件,并命名為.env
cp env-example .env
5. 修改配置文件
修改剛剛復(fù)制的配置文件,最上面有行Application的配置,是指你項(xiàng)目的位置所在,這里指的是你的項(xiàng)目要放在哪個文件夾下,把APPLICATION=../
改為APPLICATION=../project-z/
,當(dāng)然這個后期也是可以更改的
雖然我把項(xiàng)目放在了project-z目錄下,其實(shí)nginx真正訪問到的位置為 project-z/public/
### Application Path
# Point to your application code, will be available at `/var/www`.
APPLICATION=../project-z/
這個目錄的意思是project-z文件夾的父目錄,是和project-z文件夾在同一級的project-z目錄
如果目錄不存在的話一般生成容器的時候會自動創(chuàng)建,如果生成的時候沒創(chuàng)建或者生成容器的時候提示找不到目錄的話,就新建好這個文件夾,因?yàn)閘inxu里會有權(quán)限的問題。
6. 生成容器并啟動服務(wù)器
以后如果啟動服務(wù)器的話,就執(zhí)行這條命令就行了。注意,第一次執(zhí)行這個命令會先從網(wǎng)上服務(wù)器里下載docker鏡像,然后在用鏡像生成容器,有了容器以后,下次啟動就直接啟動容器了。
第一次執(zhí)行因?yàn)橐螺d鏡像,隨便一個鏡像都很大,所以,如果不更改Docker源的話,基本上就無望了。好多人也都是在這步放棄的,即便你更改了Docker源有時候也會下載失敗,多執(zhí)行幾次這條命令就,直到執(zhí)行成功。
docker-compose up -d nginx mysql
(-d,表示后臺啟動。workspace 和 php-fpm 將運(yùn)行在大部分實(shí)例中, 所以不需要在 up 命令中加上它們。)
安裝完成,并且啟動以后的效果,應(yīng)該類似這樣的
Starting laradock_mysql_1 ...
Starting laradock_mysql_1
Recreating laradock_applications_1 ...
Recreating laradock_applications_1 ... done
Recreating laradock_workspace_1 ...
Recreating laradock_workspace_1 ... done
Recreating laradock_php-fpm_1 ...
Recreating laradock_php-fpm_1 ... done
Recreating laradock_nginx_1 ...
Recreating laradock_nginx_1 ... done
會發(fā)現(xiàn)啟動的時候有些顯示的是done的,這些不用管,我琢磨著應(yīng)該是重復(fù)啟動相同的容器,然后端口被占用所造成的失敗。
7. 查看啟動效果
在本地的瀏覽器上輸入http://localhost/
,會發(fā)現(xiàn)提示404,這是因?yàn)槲覀冸m然創(chuàng)建了project-z,但是并沒有在里面新建文件,在里面放入一個新建的index.php文件。
放入index.php文件后重新訪問,發(fā)現(xiàn)還是提示404,其實(shí),這是因?yàn)閚gixn默認(rèn)配置是在public目錄下的。在project-z文件夾里面新建一個public目錄,然后再在里面放入index.php發(fā)現(xiàn)就能訪問到了。
8. 完成
到這里其實(shí)已經(jīng)完成了,因?yàn)橐呀?jīng)能訪問到項(xiàng)目了,以后再次啟動服務(wù)器的時候只需要運(yùn)行docker-compose up -d nginx mysql
就能直接啟動服務(wù)了
9. 安裝laravel項(xiàng)目
- 首先進(jìn)入到項(xiàng)目容器里面
docker-compose exec --user=laradock workspace bash
執(zhí)行完這條命令后,會發(fā)現(xiàn)你的用戶已經(jīng)變更了,說明你已經(jīng)進(jìn)入到容器里面了
- 安裝laravel項(xiàng)目
composer create-project laravel/laravel coolapp
(PS:為什么要在容器里安裝,而不直接在本地直接安裝呢?這個我琢磨著應(yīng)該是權(quán)限的問題,因?yàn)閘inxu和mac會有用戶權(quán)限和文件夾權(quán)限這一說法)
- 按照安裝laravel的要求,給一些目錄設(shè)置寫權(quán)限
8. 更改項(xiàng)目為laravel目錄
- 輸入
exit
,退出容器 - 輸入
docker-compose stop
關(guān)閉所有容器。 - 然后更改
.env
文件。由原來的../project-z/
目錄改為../project-z/coolapp/
。(PS:注意,這里默認(rèn)就是進(jìn)入的publi目錄,所以不需要額外的在指定public目錄了) - 啟動服務(wù)
docker-compose up -d nginx mysql
- 在瀏覽器地址欄上輸入
http://localhost/
,查看效果
9. 更改laravel的數(shù)據(jù)庫連接
進(jìn)入laravel項(xiàng)目目錄下,更改coolapp目錄里的.env
的laravel配置文件為DB_HOST=mysql
那么問題來了,mysql的用戶名密碼以及數(shù)據(jù)庫的名字是什么?這個可以查看laradock目錄下的
.env
配置文件,然后在文件里搜索mysql關(guān)鍵字,你就會看到mysql的一些配置,數(shù)據(jù)庫,密碼,用戶名等等。
其它問題
- 下載鏡像的時候有的提示需要key之類的,意思是你需要登錄你的docker,去到Docker官網(wǎng)上注冊個號,然后在你本機(jī)的Docker服務(wù)上登錄上你的號就可以了。
- 以上步驟是單項(xiàng)目下的服務(wù)器配置。即,只針對一個域名下的配置,多域名的請參考Laradock官方文檔的多項(xiàng)目配置。
- 啟動服務(wù)正常,訪問一直是'404 Not Found',進(jìn)入nginx容器里,查看nginx配置,發(fā)現(xiàn)里面多了一個public目錄,所以需要在指定的項(xiàng)目目錄下在新建一個public目錄。
- 執(zhí)行
docker-compose up -d nginx mysql
,會提示經(jīng)常提示服務(wù)器錯誤,因?yàn)榧幢愀鼡Q了Docker源,但是因?yàn)椴环€(wěn)定,所以還是經(jīng)常下載失敗。多執(zhí)行幾次這條命令 - 生成鏡像的時候,有可能生成鏡像的時候失敗過,然后再次執(zhí)行
docker-compose up -d nginx mysql
無法構(gòu)建當(dāng)前鏡像。查看鏡像發(fā)現(xiàn)有生成為none的鏡像,刪除掉即可 - 鏡像有時候刪除不掉,是因?yàn)檫€有依賴它生成的容器沒有關(guān)閉,所以先停止所有容器,然后在刪除鏡像。
注意事項(xiàng)
- 各個端口一定不能被占用,不然服務(wù)會啟動失敗
- 切換Docker源,不然下載鏡像的時候會非常慢
- 項(xiàng)目默認(rèn)位置是在你設(shè)置目錄的public目錄下面的
- 服務(wù)器的配置都能在.env里找到,如果找不到,進(jìn)入你的服務(wù)器容器里,然后直接查看配置
- 其它容器組合直接可以看laradock目錄下有啥文件夾,就有啥服務(wù)。
- docker默認(rèn)是掛載的方式(即類似于共享目錄的方式),把你本地的目錄掛載到容器里的,所以docker里有配置掛載目錄的選項(xiàng),如果找不到目錄,可以到docker服務(wù)器里查看有沒有把項(xiàng)目的目錄掛載上去。
基本docker命令
- 關(guān)閉所有容器(停止所有服務(wù))
docker-compose stop
- 刪除所有容器
docker-compose down
- 刪除所有鏡像
docker rmi $(docker images -q)
- 后臺啟動容器(以后臺的方式啟動服務(wù))
docker-compose up -d {容器名稱}
- 查看所有容器
docker ps
- 查看所有鏡像
docer images
原文鏈接:Dennis`s blog
參考鏈接:
基于 LaraDock 在 Docker 中快速構(gòu)建 Laravel 應(yīng)用系列教程 —— 搭建開發(fā)環(huán)境
laradock文檔
開始使用Docker for Mac