用 Laradock搭建本地 PHP 容器開發環境&寶塔Docker一鍵部署


用 Laradock搭建本地 PHP 容器開發環境&寶塔Docker一鍵部署

很多時候工作中我感覺到深深的痛苦,因為我不能愉快的開發,50%甚至80%的時間都浪費在環境搭建上,依賴問題、環境變量問題、端口衝突、編譯庫、扶牆走問題等等。

可以說Docker很大程度拯救了我,這個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,不在受本地環境限制,就能得到良好的工作環境,並且便攜無遷移痛苦,在我實踐的這幾年中深深受益。

今天是要總結的是 PHP開發、部署環境。我因為主業不是PHP開發,雖然有一定經驗,但也比較少去做一些基於 php 的大型項目,但它來了,所以我就祭出 docker 來搭建一套方便的開發部署環境,平時我的本地開發環境需求比較複雜,既會做 java、nodejs、python,現在又加上 php,還有一些非語言類的環境,如果都安裝在本地先不說會不會衝突,維護起來也真夠一夢的,所以當前的本地開發除非必要全部都是 docker 容器化。

不說廢話,開始工作。

搭建PHP Docker 開發環境

這次的 PHP docker 開發環境有大神已經做好了,我們只要下載回來安裝即可,在 github 中搜索 laradock。

一、配置

<code>cd ~
mkdir PHP_Workspace
cd PHP_Workspace
git clone https://github.com/laradock/laradock
cp env-example env/<code>

.env 文件大部分情況下不需要改動,但很有可能我們會遇到 docker 鏡像拉取慢、npm 包下載慢等網絡問題,所以我們進行如下配置。

1、Docker 源配置


用 Laradock搭建本地 PHP 容器開發環境&寶塔Docker一鍵部署

<code>{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}/<code>

配置為國內源的源。

2、Wokspace 配置

<code>  # 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/<code>

3、NVM配置

<code> WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/<code>

其它各種開發配置都可以在 .env 文件中找到,如 php debug相關

PHP_FPM_INSTALL_XDEBUG

WORKSPACE_INSTALL_XDEBUG

二、啟動容器

<code>docker-compose up -d nginx mysql phpmyadmin redis workspace /<code>

這步操作會執行 docker 的自動下載 image 以及 buid 相關操作,執行後會得到以下容器

  • nginx
  • mysql
  • phpmyadmin
  • redis
  • php-fpm
  • workspace
  • 三、開發配置

    這個時我們就可以進行項目開發相關的配置

    將我們的項目放在 PHP_Workspace 工程下面,與 laradock 同級,目錄如下

    <code>➜  PHP_Workspace
    .
    ├── laradock
    └── mp-shop/<code>

    配置 nginx

    <code>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/<code>

    可以看到文件夾中有一些配置模板,根據需要可以 copy 過來使用或者自建,我這裡新建了 mp-shop.conf,配置就是 copy laravel.conf 但是略有調整


    用 Laradock搭建本地 PHP 容器開發環境&寶塔Docker一鍵部署

    Nginx 就配置好了,然將我們的 server_name 做一下本地的 host 映射

    <code>127.0.0.1 mp-shop.test/<code>

    檢驗

    <code>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/<code>

    可以看到進入 workspace 容器后里面已經映射好當前 PHP_Workspace 中的項目以及 laradock 環境。

    訪問 mp-shop.test 網頁如期而遇的展現出來。

    一些項目的補充說明,當前開發環境啟動後,我們的程序針對數據庫、redis 或其它服務的主機名,可以在.env 中找到

    <code>DB_HOST=mysql
    REDIS_HOST=redis/<code>
    <code>// 數據庫配置
    $config = [
    'host' => 'mysql',
    'database' => 'default',
    'username' => 'default',
    'password' => 'secret',
    'port' => '3306',
    'charset' => 'utf8',
    ];/<code>

    以上就是基於 laradock 的本地 docker 開發環境的配置,中間我遇到的主要問題就是網絡環境和一些配置不清的問題,所以這方面遇到問題的同學可以與我直接交流,接下來就是關於上線所應用的寶塔。

    Docker 寶塔一鍵部署

    寶塔Linux面板是提升運維效率的服務器管理軟件,支持一鍵LAMP/LNMP/集群/監控/網站/FTP/數據庫/JAVA等100多項服務器管理功能。在運維界知名度相當高,也非常的好用、實用,但直接安裝還是稍微繁瑣,今天我們就用 docker 來一鍵部署。

    這裡我用一個完成度很好的 docker 腳本項目,簡單介紹下:

  • 鏡像默認使用 Centos7 基礎鏡像,使用 Dockerfile 構建
  • 該腳本每次 build 的用戶名和密碼以及登錄URL都不同,請使用 docker-compose logs app 查看默認信息
  • 安裝時間視網絡環境而定,建議更換 Docker 的國內源
  • 啟動腳本是 ./DockerScript/init.sh
  • 配置文件 .env 中都有詳細的註釋
  • 使用 volume 作持久化存儲,數據卷名為 baota_app
  • 1、克隆項目

    <code>git clone https://github.com/ifui/baota/<code>

    2、配置環境

    <code>cp .env-example .env/<code>

    3、啟動鏡象

    <code>docker-compose up -d app/<code>

    完成!

    總結

    此篇文章主要介紹瞭如何利用 Laradock 搭建一套完善的本地 php 開發環境,以及如何利用 docker 去方便的部署寶塔,此次項目中主要遇到了網絡問題、配置說明不清晰的問題,耽誤了不少時間,但效果是非常好的。下面附上文中應用的相關項目。

    • http://laradock.io/
    • https://github.com/ifui/baota


    分享到:


    相關文章: