
很多時候工作中我感覺到深深的痛苦,因為我不能愉快的開發(fā),50%甚至80%的時間都浪費在環(huán)境搭建上,依賴問題、環(huán)境變量問題、端口沖突、編譯庫、扶墻走問題等等。
可以說Docker很大程度拯救了我,這個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,不在受本地環(huán)境限制,就能得到良好的工作環(huán)境,并且便攜無遷移痛苦,在我實踐的這幾年中深深受益。
今天是要總結的是 PHP開發(fā)、部署環(huán)境。我因為主業(yè)不是PHP開發(fā),雖然有一定經驗,但也比較少去做一些基于 php 的大型項目,但它來了,所以我就祭出 docker 來搭建一套方便的開發(fā)部署環(huán)境,平時我的本地開發(fā)環(huán)境需求比較復雜,既會做 java、nodejs、python,現在又加上 php,還有一些非語言類的環(huán)境,如果都安裝在本地先不說會不會沖突,維護起來也真夠一夢的,所以當前的本地開發(fā)除非必要全部都是 docker 容器化。
不說廢話,開始工作。
搭建PHP Docker 開發(fā)環(huán)境
這次的 PHP docker 開發(fā)環(huán)境有大神已經做好了,我們只要下載回來安裝即可,在 github 中搜索 laradock。
一、配置
cd ~
mkdir PHP_Workspace
cd PHP_Workspace
git clone https://github.com/laradock/laradock
cp env-example env
.env 文件大部分情況下不需要改動,但很有可能我們會遇到 docker 鏡像拉取慢、npm 包下載慢等網絡問題,所以我們進行如下配置。
1、Docker 源配置
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
配置為國內源的源。
2、Wokspace 配置
# If you need to change the sources (i.e. to China), set CHANGE_SOURCE to true
CHANGE_SOURCE=true
# Set CHANGE_SOURCE and UBUNTU_SOURCE option if you want to change the Ubuntu system sources.list file.
UBUNTU_SOURCE=aliyun
3、NVM配置
WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
其它各種開發(fā)配置都可以在 .env 文件中找到,如 php debug相關
PHP_FPM_INSTALL_XDEBUG
WORKSPACE_INSTALL_XDEBUG
二、啟動容器
docker-compose up -d nginx mysql phpmyadmin redis workspace
這步操作會執(zhí)行 docker 的自動下載 image 以及 buid 相關操作,執(zhí)行后會得到以下容器
- nginx
- mysql
- phpmyadmin
- redis
- php-fpm
- workspace
三、開發(fā)配置
這個時我們就可以進行項目開發(fā)相關的配置
將我們的項目放在 PHP_Workspace 工程下面,與 laradock 同級,目錄如下
? PHP_Workspace
.
├── laradock
└── mp-shop
配置 nginx
cd ./laradock/nginx/sites
.
├── app.conf.example
├── confluence.conf.example
├── default.conf
├── laravel.conf.example
├── laravel_varnish.conf.example
├── mp-shop.conf
└── symfony.conf.example
可以看到文件夾中有一些配置模板,根據需要可以 copy 過來使用或者自建,我這里新建了 mp-shop.conf,配置就是 copy laravel.conf 但是略有調整
Nginx 就配置好了,然將我們的 server_name 做一下本地的 host 映射
127.0.0.1 mp-shop.test
檢驗
docker-compose exec workspace bash
drwxr-xr-x 87 root root 2784 Mar 22 01:21 laradock
drwxrwxr-x 14 root root 448 Mar 21 07:36 mp-shop
可以看到進入 workspace 容器后里面已經映射好當前 PHP_Workspace 中的項目以及 laradock 環(huán)境。
訪問 mp-shop.test 網頁如期而遇的展現出來。
一些項目的補充說明,當前開發(fā)環(huán)境啟動后,我們的程序針對數據庫、redis 或其它服務的主機名,可以在.env 中找到
DB_HOST=mysql
REDIS_HOST=redis
// 數據庫配置
$config = [
'host' => 'mysql',
'database' => 'default',
'username' => 'default',
'password' => 'secret',
'port' => '3306',
'charset' => 'utf8',
];
**以上就是基于 **laradock 的本地 docker 開發(fā)環(huán)境的配置,中間我遇到的主要問題就是網絡環(huán)境和一些配置不清的問題,所以這方面遇到問題的同學可以與我直接交流,接下來就是關于上線所應用的寶塔。
Docker 寶塔一鍵部署
寶塔Linux面板是提升運維效率的服務器管理軟件,支持一鍵LAMP/LNMP/集群/監(jiān)控/網站/FTP/數據庫/JAVA等100多項服務器管理功能。在運維界知名度相當高,也非常的好用、實用,但直接安裝還是稍微繁瑣,今天我們就用 docker 來一鍵部署。
這里我用一個完成度很好的 docker 腳本項目,簡單介紹下:
- 鏡像默認使用 Centos7 基礎鏡像,使用 Dockerfile 構建* 該腳本每次 build 的用戶名和密碼以及登錄URL都不同,請使用 docker-compose logs app 查看默認信息* 安裝時間視網絡環(huán)境而定,建議更換 Docker 的國內源* 啟動腳本是 ./DockerScript/init.sh* 配置文件 .env 中都有詳細的注釋* 使用 volume 作持久化存儲,數據卷名為 baota_app
1、克隆項目
git clone https://github.com/ifui/baota
2、配置環(huán)境
cp .env-example .env
3、啟動鏡象
docker-compose up -d app
完成!
總結
此篇文章主要介紹了如何利用 Laradock 搭建一套完善的本地 php 開發(fā)環(huán)境,以及如何利用 docker 去方便的部署寶塔,此次項目中主要遇到了網絡問題、配置說明不清晰的問題,耽誤了不少時間,但效果是非常好的。下面附上文中應用的相關項目。