Resumen

Phalcon Compose es un entorno de desarrollo impulsado por la comunidad para los proyectos de Phalcon que se ejecutan en Docker. Su propósito es facilitar el arranque de aplicaciones Phalcon y ejecutarse en entornos de desarrollo o producción.

Dependencias

Para ejecutar esta pila en su maquina, al menos, necesitará lo siguiente:

Servicios

Los servicios incluidos son:

Nombre del servicio Descripción
mongo Contenedor del servidor MongoDB.
postgres Contenedor del servidor PostgreSQL.
mysql Contenedor de base de datos MySQL.
phpmyadmin Una interfaz web para MySQL y MariaDB.
memcached Contenedor del servidor Memcached.
queue Contenedor de cola de Beanstalk.
aerospike Aerospike: base de datos distribuida fiable, de alto rendimiento optimizada para flash y RAM.
redis Contenedor de base de datos Redis.
app Contenedor de PHP 7, Apache 2 y Composer.
elasticsearch Elasticsearch es un motor de búsqueda y análisis de código abierto de gran alcance, que facilita la búsqueda de datos.

Instalación

Con Composer (recomendado)

Usando Composer, se puede crear un nuevo proyecto de la siguiente forma:

$ composer create-project phalcon/compose --prefer-dist <nombre de la carpeta>

Su salida debería ser similar a esto:

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

Con Git

Otra forma de inicializar su proyecto es con Git.

$ git clone [email protected]:phalcon/phalcon-compose.git

Añadir la aplicación Phalcon en la carpeta application.

Configuración

Añadir phalcon.local (o su nombre de host preferido) en el archivo /etc/hosts como se muestra a continuación:

$ 127.0.0.1 www.phalcon.local phalcon.local

Uso

Ahora puede construir, crear, iniciar y adjuntar a contenedores al entorno para su aplicación. Para construir los contenedores use el siguiente comando dentro de la raíz del proyecto:

$ docker-compose build

Para iniciar la aplicación y ejecutar los contenedores en segundo plano, utilice el siguiente comando dentro de la raíz del proyecto:

También puede usar aquí, el nombre del proyecto preferido, con el parámetro -p <mi-aplicación>

$ docker-compose up -d

Ahora configura tu proyecto en el contenedor de la aplicación, usando las herramientas de desarrollador de Phalcon

Reemplazar el proyecto en con el nombre de su directorio/proyecto (se muestra en la salida de docker-compose up -d)

$ docker exec -t <project_app_1> phalcon project application simple

Ahora puede lanzar la aplicación en su navegador ingresando a http://phalcon.local (o el nombre de host que elegiste anteriormente).

Configurar

Si su aplicación utiliza un caché de archivos o escribe registros de logs en archivos, puede configurar la memoria de caché y carpetas para los registros de la siguiente manera:

Directorio Ruta
Cache /project/cache
Logs /project/log

Registro de logs

Para la mayoría de los recipientes puede acceder a los registros utilizando el comando docker logs <nombre_del_contenedor> en tu ordenador.

Variables de entorno

Usted puede pasar varias variables de entorno desde un archivo externo a los contenedores del servicio, editando el archivo variables.env.

Entorno web

Variable de entorno Descripción Por defecto
WEB_DOCUMENT_ROOT Raíz del documento para el servidor Web (dentro del contenedor). /project/public
WEB_DOCUMENT_INDEX Documento índice. index.php
WEB_ALIAS_DOMAIN Alias de dominio. *.vm
WEB_PHP_SOCKET Dirección del socket PHP-FPM. 127.0.0.1:9000
APPLICATION_ENV Entorno de la aplicación. development
APPLICATION_CACHE Directorio de cache de la aplicación (dentro del contenedor). /project/cache
APPLICATION_LOGS Directorio de registro de logs de la aplicación (dentro del contenedor). /project/logs

Variables de phpMyAdmin

Variable de entorno Descripción Por defecto
PMA_ARBITRARY Cuándo se configura en 1 se permitirá la conexión con el servidor. 1
PMA_HOST Definir dirección o nombre de host del servidor MySQL. mysql
PMA_HOSTS Definir lista separada por comas de nombres de host/dirección de los servidores de MySQL. Usar sólo si PMA_HOST está vacía.
PMA_PORT Definir el puerto del servidor MySQL. 3306
PMA_VERBOSE Definir el nombre detallado del servidor MySQL.
PMA_VERBOSES Definir lista separada por comas de nombres detallados de los servidores de MySQL. Usar sólo si PMA_VERBOSE está vacía.
PMA_USER Definir el nombre de usuario para configuración el método de autenticación. phalcon
PMA_PASSWORD Definir la contraseña a utilizar para configurar el método de autenticación. secret
PMA_ABSOLUTE_URI Ruta completa de acceso (por ejemplo https://pma.example.net/) donde el proxy inverso hace que phpMyAdmin este disponible.

Ver también

Depurador remoto Xdebug (PhpStorm)

Para propósitos de depuración puede configurar Xdebug pasando los parámetros requeridos (ver variables.env).

Variable de entorno Descripción Por defecto
XDEBUG_REMOTE_HOST Valor de php.ini para xdebug.remote_host. (your host IP)
XDEBUG_REMOTE_PORT Valor de php.ini para xdebug.remote_port. 9000
XDEBUG_REMOTE_AUTOSTART Valor de php.ini para xdebug.remote_autostart. Off
XDEBUG_REMOTE_CONNECT_BACK Valor de php.ini para xdebug.remote_connect_back. Off

Nota Puede encontrar su dirección IP local como se muestra a continuación:

Linux/macOS

$ ifconfig en1 | grep inet | awk '{print $2}' | sed 's/addr://' | grep .

Windows

> ipconfig

Resolución de problemas

Inicio o enlace de errores

Si tiene algún problema de inicio, puede intentar reconstruir el contenedor de la aplicación. No habrá pérdida de datos. Es un reinicio seguro:

docker-compose stop
docker-compose rm --force app
docker-compose build --no-cache app
docker-compose up -d

Reinicio completo

Para restablecer todos los contenedores, eliminar todos los datos (mysql, elasticsearch, etcétera) pero no los archivos de proyectos en carpeta aplicación:

docker-compose stop
docker-compose rm --force
docker-compose build --no-cache
docker-compose up -d

Actualización de dependencias

A veces las imágenes de base (por ejemplo phalconphp/php-apache: ubuntu-16.04) se actualizan. Phalcon Compose depende de estas imágenes. Por lo tanto usted tendrá que actualizarlas y siempre es bueno hacerlo para asegurar que tenga la funcionalidad más reciente disponible. Los contenedores dependientes de estas imágenes tendrán que ser actualizados y reconstruidos:

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

Los usuarios de Linux/MacOS pueden utilizar make para realizar la tarea:

$ make pull

Luego tienes que reiniciar todos los contenedores, eliminar todos los datos, reconstruir los servicios y reiniciar la aplicación.

Los usuarios de Linux/MacOS pueden usar make para realizar la tarea:

$ make reset