🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[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** &gt; `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`