Phalcon Compose (Docker)
最后更新于:2022-04-02 05:13:26
[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 `
你的输出应该类似于:
```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 `参数的首选项目名称
$ `docker-compose up -d`
现在使用Phalcon Developer Tools在app容器中设置项目
将 **** 中的项目替换为项目/目录的名称(显示在`docker-compose up -d`的输出中)
$ `docker exec -t phalcon project application simple`
现在,您现在可以在浏览器中启动您的应用程序,访问`http://phalcon.local`(或您在上面选择的主机名)。
## 设置
如果您的应用程序使用文件缓存或将日志写入文件,则可以按如下方式设置缓存和日志文件夹:
| 目录 | 路径 |
| --------- | ---------------- |
| Cache | `/project/cache` |
| Logs | `/project/log` |
## Logs
对于大多数容器,您可以使用主机中的 `docker logs `命令访问日志。
## 环境变量
您可以通过编辑`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`
';