用 Laradock搭建本地 PHP 容器開發(fā)環(huán)境&寶塔Docker一鍵部署

image.png

很多時候工作中我感覺到深深的痛苦,因為我不能愉快的開發(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 源配置

image
{
  "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 但是略有調整

image

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 去方便的部署寶塔,此次項目中主要遇到了網絡問題、配置說明不清晰的問題,耽誤了不少時間,但效果是非常好的。下面附上文中應用的相關項目。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容