[TOC]
# 概況
Phalcon Compose是一個社區驅動的樣板開發環境,適用于在Docker上運行的Phalcon項目。其目的是使Phalcon應用程序更容易引導并在開發或生產環境中運行它們。
## 依賴
要在您的計算機上運行此堆棧,您至少需要:
* 操作系統:Windows, Linux, or OS X
* [Docker Engine](https://docs.docker.com/installation/) >= 1.10.0
* [Docker Compose](https://docs.docker.com/compose/install/) >= 1.6.2
## 服務
服務包括:
| Service名稱 | 描述 |
| ------------- | --------------------------------------------------------------------------------------------------- |
| mongo | MongoDB服務器容器。 |
| postgres | 服務器容器。 |
| mysql | MySQL數據庫容器。 |
| phpmyadmin | MySQL和MariaDB的Web界面。 |
| memcached | Memcached服務器容器。 |
| queue | Beanstalk隊列容器。 |
| aerospike | Aerospike - 針對閃存和RAM優化的可靠,高性能的分布式數據庫。 |
| redis | Redis數據庫容器。 |
| app | PHP 7,Apache 2和Composer容器。 |
| elasticsearch | Elasticsearch是一個功能強大的開源搜索和分析引擎,可以輕松搜索數據。 |
## 安裝
### 使用Composer(推薦)
使用Composer,您可以創建一個新項目,如下所示:
$ `composer create-project phalcon/compose --prefer-dist <folder name>`
你的輸出應該類似于:
```php
Example
Installing phalcon/compose (version)
- Installing phalcon/compose (version)
Loading from cache
Created project in folderName
> php -r "copy('variables.env.example', 'variables.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
```
### 使用Git
初始化項目的另一種方法是使用Git。
$ `git clone git@github.com:phalcon/phalcon-compose.git`
>[danger] 確保將`variables.env.example`復制到`variables.env`并調整該文件中的設置。
將Phalcon應用程序添加到`application`文件夾中。
## 配置
在 `/etc/hosts`文件中添加`phalcon.local`(或首選主機名),如下所示:
$ `127.0.0.1 www.phalcon.local phalcon.local`
## 使用
您現在可以為應用程序構建,創建,啟動和附加到環境的容器。要構建容器,請在項目根目錄中使用以下命令:
$ `docker-compose build`
要啟動應用程序并在后臺運行容器,請在項目根目錄中使用以下命令:
您可以在此處使用帶有`-p <my-app>`參數的首選項目名稱
$ `docker-compose up -d`
現在使用Phalcon Developer Tools在app容器中設置項目
將 **<project_app_1>** 中的項目替換為項目/目錄的名稱(顯示在`docker-compose up -d`的輸出中)
$ `docker exec -t <project_app_1> phalcon project application simple`
現在,您現在可以在瀏覽器中啟動您的應用程序,訪問`http://phalcon.local`(或您在上面選擇的主機名)。
## 設置
如果您的應用程序使用文件緩存或將日志寫入文件,則可以按如下方式設置緩存和日志文件夾:
| 目錄 | 路徑 |
| --------- | ---------------- |
| Cache | `/project/cache` |
| Logs | `/project/log` |
## Logs
對于大多數容器,您可以使用主機中的 `docker logs <container_name>`命令訪問日志。
## 環境變量
您可以通過編輯`variables.env`文件將多個環境變量從外部文件傳遞到服務的容器。
### Web環境
| 環境變量 | 描述 | 默認 |
| -------------------- | --------------------------------------------------- | --------------- |
| `WEB_DOCUMENT_ROOT` |Web服務器的文檔根(在容器內)。 | /project/public |
| `WEB_DOCUMENT_INDEX` | 索引文件。 | index.php |
| `WEB_ALIAS_DOMAIN` | 域別名。 | *.vm |
| `WEB_PHP_SOCKET` | PHP-FPM socket 地址。 | 127.0.0.1:9000 |
| `APPLICATION_ENV` | 應用環境。 | development |
| `APPLICATION_CACHE` |應用程序緩存目錄(在容器內)。 | /project/cache |
| `APPLICATION_LOGS` | 應用程序日志目錄(在容器內)。 | /project/logs |
### phpMyAdmin變量
| 環境變量 | 描述 | 默認 |
| -------------------- | ------------------------------------------------------------------------------------------------------------ | ------- |
| `PMA_ARBITRARY` | 設置為1時,將允許與服務器的連接。 | 1 |
| `PMA_HOST` | 定義MySQL服務器的地址/主機名。 | mysql |
| `PMA_HOSTS` | 定義逗號分隔的MySQL服務器的地址/主機名列表。僅在`PMA_HOST`為空時使用。 | |
| `PMA_PORT` |定義MySQL服務器的端口。 | 3306 |
| `PMA_VERBOSE` | 定義MySQL服務器的詳細名稱。 | |
| `PMA_VERBOSES` | 定義以逗號分隔的MySQL服務器詳細名稱列表。僅在`PMA_VERBOSE`為空時使用。 | |
| `PMA_USER` | 定義用于配置身份驗證方法的用戶名。 | phalcon |
| `PMA_PASSWORD` | 定義用于配置身份驗證方法的密碼。 | secret |
| `PMA_ABSOLUTE_URI` | 反向代理使phpMyAdmin可用的完全限定路徑(例如https://pma.example.net/)。| |
*參見*
* https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker
* https://docs.phpmyadmin.net/en/latest/config.html#config
* https://docs.phpmyadmin.net/en/latest/setup.html
## Xdebug遠程調試器(PhpStorm)
出于調試目的,您可以通過傳遞所需參數來設置Xdebug(請參閱variables.env)。
| 環境變量 | 描述 | 默認 |
| ---------------------------- | ------------------------------------------------- | -------------- |
| `XDEBUG_REMOTE_HOST` |`php.ini` 中的`xdebug.remote_host` 值。 | (your host IP) |
| `XDEBUG_REMOTE_PORT` | `php.ini` 中的 `xdebug.remote_port` 值。 | 9000 |
| `XDEBUG_REMOTE_AUTOSTART` | `php.ini` 中的 `xdebug.remote_autostart` 值。 | Off |
| `XDEBUG_REMOTE_CONNECT_BACK` | `php.ini` 中的 `xdebug.remote_connect_back` 值。 | Off |
*注意* 您可以按如下方式找到本地IP地址:
**Linux/macOS**
$ `ifconfig en1 | grep inet | awk '{print $2}' | sed 's/addr://' | grep .`
**Windows**
> `ipconfig`
## 故障排除
### 啟動或鏈接錯誤
如果您遇到任何啟動問題,可以嘗試重建app容器。不會丟失數據。這是一個安全的重置:
```bash
docker-compose stop
docker-compose rm --force app
docker-compose build --no-cache app
docker-compose up -d
```
### 全部重置
要重置所有容器,請刪除`application`文件夾中的所有數據(mysql,elasticsearch等),但不刪除項目文件:
```bash
docker-compose stop
docker-compose rm --force
docker-compose build --no-cache
docker-compose up -d
```
### 更新依賴
有時基礎鏡像(例如`phalconphp/php-apache:ubuntu-16.04`)會更新。Phalcon Compose取決于這些鏡像。因此,您需要更新它們,這樣做總是一件好事,以確保您擁有最新的功能。需要更新和重建這些鏡像的依賴容器:
```bash
docker pull mongo:3.4
docker pull postgres:9.5-alpine
docker pull mysql:5.7
docker pull phpmyadmin/phpmyadmin:4.6
docker pull memcached:1.4-alpine
docker pull phalconphp/beanstalkd:1.10
docker pull aerospike:latest
docker pull redis:3.2-alpine
docker pull elasticsearch:5.2-alpine
docker pull phalconphp/php-apache:ubuntu-16.04
```
Linux/MacOS 用戶可以使用`make`來執行任務:
$ `make pull`
然后,您必須重置所有容器,刪除所有數據,重建服務并重新啟動應用程序。
Linux/MacOS 用戶可以使用`make`來執行任務:
$ `make reset`
- 常規
- Welcome
- 貢獻
- 生成回溯
- 測試重現
- 單元測試
- 入門
- 安裝
- Web服務器設置
- WAMP
- XAMPP
- 教程
- 基礎教程
- 教程:創建一個簡單的REST API
- 教程:V?kuró
- 提升性能
- 教程:INVO
- 開發環境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 開發工具
- Phalcon開發者工具的安裝
- Phalcon開發者工具的使用
- 調試應用程序
- 核心
- MVC應用
- 微應用
- 創建命令行(CLI)應用程序
- 依賴注入與服務定位
- MVC架構
- 服務
- 使用緩存提高性能
- 讀取配置
- 上下文轉義
- 類加載器
- 使用命名空間
- 日志
- 隊列
- 數據庫
- 數據庫抽象層
- Phalcon查詢語言(PHQL)
- ODM(對象文檔映射器)
- 使用模型
- 模型行為
- ORM緩存
- 模型事件
- 模型元數據
- 模型關系
- 模型事務
- 驗證模型
- 數據庫遷移
- 分頁
- 前端
- Assets管理
- 閃存消息
- 表單
- 圖像
- 視圖助手(標簽)
- 使用視圖
- Volt:模板引擎
- 業務邏輯
- 訪問控制列表(ACL)
- 注解解析器
- 控制器
- 調度控制器
- 事件管理器
- 過濾與清理
- 路由
- 在session中存儲數據
- 生成URL和路徑
- 驗證
- HTTP
- Cookies管理
- 請求環境
- 返回響應
- 安全
- 加密/解密
- 安全
- 國際化
- 國際化
- 多語言支持