Docker Laravel
概述
在實際工作中,你可能會有這樣的尷尬,電腦系統不敢升級,升級後所有環境得重新搭建,浪費不必要的時間。這個專案旨在從0跑起來一個Laravel專案,只需要一個簡單的命令,如果你是一個Laravel新手,你甚至都不需要執行composer create-project
來建立Laravel,下面的一個命令會為你準備好一切。
// 構建並啟動環境,啟動後可透過http://${NGINX_HOST}:8888訪問,NGINX_HOST在nginx下.env檔案中定義
docker-compose up
效果如下:
訪問:http://${NGINX_HOST}:8888
訪問laravel首頁
*注:記得新增host
或者訪問:http://127.0.0.1:8888/phpinfo.php
檢視php
資訊
如果不需要建立新的Larave專案,只想要一個能跑起來的環境,你只需要更改根目錄下common.env
中的PROJECT_CREATE=false
,然後把你的專案複製src
目錄中即可。如果你想盡快試試,地址在這裡:github、gitee
並且由於Docker
的特新,使得更換PHP
版本更簡單,也可以同時執行多個版本的PHP
。
啟動方式
git clone git@github.com:lqxun/docker-laravel.git
或者
git clone git@gitee.com:orol/docker-laravel.git
cd docker-laravel
docker-compose up
專案配置
1、公共配置
公共配置在根目錄下的common.env
檔案中,裡面定義瞭如下內容
*注:需要建立新專案時會以該配置建立專案目錄
# 是否重新建立專案(composer create)
PROJECT_CREATE=true
#專案名稱(project下的資料夾名,nginx 的root會指向${PROJECT_NAME}/public)
PROJECT_NAME=blog
# 時區
TZ=Asia/Shanghai
2、配置Nginx域名和專案目錄
nginx
目錄中有.env
檔案
# 埠號
NGINX_PORT=80
# 訪問域名(記得修改host)
NGINX_HOST=test.doc
配置檔案定義在nginx/templates
目錄下以*.template
結尾的檔案中,該檔案中可直接讀取.env
配置的環境變數,該檔案最終會被輸出到/etc/nginx/conf.d
目錄下。附上nginx
官方映象文件傳送門
3、配置PHP
目錄結構如下
├── .env
├── Dockerfile
├── conf.d
│ └── php_dev.ini
├── docker-laravel-entrypoint.sh
└── fpm-conf.d
└── fpm_dev.conf
php
目錄預留了.env
檔案,預設是空的,如有需要可自行定義。conf.d
目錄下定義了php
配置檔案php_dev.ini
,fpm-conf.d
下定義了fpm
配置檔案fpm_dev.conf
,可根據需求自行修改,修改完後執行docker-compose up
重啟容器就行。php
擴充套件的安裝,請參考官方映象文件傳送門
php
的配置檔案可以VOLUME
掛載進去,也可以在Dockerfile
中COPY
進去,但是有個問題:如果掛載進去,本地的配置會覆蓋容器中的配置,可能會刪除一些預設配置,好處是,不需要重新構建映象,只需要重啟容器即可。如果COPY
進去,不會破壞容器預設的配置,但是每次都需要重新構建映象,看大家需要自行選擇吧。本專案是COPY
進去的。掛載的程式碼也已寫好,只需開啟docker-compose.yml
中的註釋,把Dockerfile
中COPY
註釋掉即可。
4、Mysql配置
mysql
的my.cnf
是掛載到容器中的,,更改配置只需要重啟容器即可,連線埠33060
,密碼在mysql
資料夾下的.env
中配置。如果出現一下問題
這是客戶端問題,請換個客戶端。如果不想換客戶端,可按照資料自行修改即可附連線Docker容器中SQLyog連線資料庫報錯plugin caching_sha2_password
本作品採用《CC 協議》,轉載必須註明作者和本文連結