Requisitos:
- Tener instalado docker
- Tener disponible docker-composer
- Nociones básicas de composer
Integrar Docker para desarrollar en php
Desarrollo en php utilizando docker composer slimframework
En la entrada anterior instalamos unas extensiones, utilizamos composer para usar slimframework apartir de un archivo composer ya creado. En la entrada de hoy veremos como instalar paquetes desde el contenedor.
Para iniciar vamos a tomar como base el ejemplo anterior y editamos el composer.json por un contenido sin paquetes:
{}
Moveremos nuestro composer.json de "server/composer.json" a "server/public/composer.json".
Ahora modificamos nuestro dockerfile para omitir la linea de copiar el composer.json y borramos la ultima linea de instalar paquetes (por ahora) de la siguiente manera:
FROM php:5.6-apache
RUN apt-get update && apt-get install libxml2-dev git libicu-dev g++ zlib1g-dev libmcrypt-dev -y
RUN docker-php-source extract
RUN docker-php-ext-install zip mcrypt mbstring intl simplexml
RUN a2enmod rewrite
RUN service apache2 restart
COPY ./server/public/ /var/www/html/
RUN usermod -u 1000 www-data
RUN chown -R www-data:www-data /var/www/
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php --filename=composer --install-dir=/usr/local/bin
RUN php -r "unlink('composer-setup.php');"
Ademas agregue nuevas extensiones que son requisitos para lograr instalar correctamente cakephp. mbstring intl y simplexml. Para esta ultima extensión agregamos un paquete extra "libxml12-dev" en la instalación de paquetes.
Construimos el contenedor y ejecutamos el servicio.
docker-compose build
docker-compose up
Ahora para poder instalar nuevas librerias es necesario acceder a la terminal del contenedor para ello en una nueva terminal ejecutamos el siguiente comando.
docker ps
donde logramos obtener el CONTAINER ID que para nuestro caso es 51be76baf0ef con este ID podemos acceder a la terminal ejecutando el siguiente comando:
docker exec -i -t 51be76baf0ef /bin/bash
De esta manera nuestra terminal entra en modo interactivo dentro de la terminal del contenedor:
A continuación o el siguiente paso es instalar cakephp segun la documentación solo es correr el siguiente comando (recordar que estamos en la terminal del contenedor ):
composer create-project --prefer-dist cakephp/app app
De lo anterior obtenemos la siguiente estructura de directorios:
Y desde el navegador http://localhost:8080/app/
Detalles por arreglar:
- El error de drive
- tener que acceder desde /app/
La buena noticia es que cakephp esta instalado. la mala es que hay un feo mensaje en rojo
Editamos el archivo /server/public/app/config/app.php y cambiamos el drive por ahora solo para silenciar el error
'driver' => 'Cake\Database\Driver\Mysql',
Por
'driver' => 'Cake\Database\Driver\Sqlite',
descarga el archivo en https://gist.github.com/fcarrizalest/a28880f9ade9212c5b5f02fed87fb970
Si volvemos al navegador ya logramos ver algo mas bonito
En la siguiente entrada organizaremos el proyecto y configuraremos apache para no tener que accceder a /app es algo molesto desde mi perspectiva.
Añadir nuevo comentario