Instalar paquetes (cakephp ) utilizando composer en docker (parte 1)

Enviado por Francisco Carrizales el Sáb, 14/10/2017 - 12:28

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".

Instalar paquetes cakephp utilizando composer dokcer nueva estructura

 

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

 

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:

terminal docker interactica 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

 

Instalacion de cakephp via composer desde el contenedor

De lo anterior obtenemos la siguiente estructura de directorios:

cakephp-instalado-nuevo-estructura

 

Y desde el navegador   http://localhost:8080/app/

desde navegador

Detalles por arreglar:

  1. El error de drive 
  2. 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

cakephp-instalado-en-docker

En la siguiente entrada organizaremos el proyecto y configuraremos apache para no tener que  accceder a /app es algo molesto desde mi perspectiva.

 

 

Etiquetas

Añadir nuevo comentario

HTML Restringido

  • Etiquetas HTML permitidas: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.