Docker – laravel

Utilizando docker instalar y levantar un servidor con laravel version 5.8

Estructura de docker

Archivo Dockerfile

FROM php:7.3-apache
RUN apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo pdo_pgsql
RUN apt-get install -y git wget zip
RUN php -r "copy ('https://getcomposer.org/installer', '/composer-setup.php');"
RUN php /composer-setup.php --install-dir=/bin --filename=composer

Utilizamos una imagen oficial de php y el archivo Dockerfile permite instalar la compatibilidad entre php y postgres ademas de librerias para archivos comprimidos tipo zip y el programa de descargas wget y descargar e instalar composer

Crear la imagen personalizada

docker build -t apachephpcomposer .

Crear docker-compose.yml

version: '3'
services:
  db58:
      image: postgres:10
      ports:
          - "5432:5432"
      networks:
          - overlay
      environment:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: 123456
      volumes:
          - ./sql:/sql
          - postgres-laravel58:/var/lib/postgresql/data
 
  pgadmin:
        image: dpage/pgadmin4
        ports:
                - "81:80"
        networks:
                - overlay
        links:
            - db58
        environment:
                PGADMIN_DEFAULT_EMAIL: fernandom2010@gmail.com
                PGADMIN_DEFAULT_PASSWORD: postgres
  web:
      image: apachephpcomposer:latest
      ports:
          - "80:80"
      volumes:
          - ../intranet:/var/www/html
          - ./http:/etc/apache2/sites-enabled
      links:
        - db58
      networks:
          - overlay

volumes:
  postgres-laravel58:

networks:
  overlay:

Archivos de configuracion

02_pdo_pgsql.ini

extension=pdo_pgsql.so

default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/var/www/html/intranet/public"
    ServerName localhost
	<Directory "/var/www/html/intranet/public/">
		Options Indexes FollowSymLinks
    	AllowOverride All
    	Require all granted
	</Directory>
</VirtualHost>

Ejecutar docker-composer

docker-compose up

Instalar laravel

Acceder al contenedor del servidor web para crear el proyecto y dar permisos a la carpeta storage

root@4dbe4b26a581:/var/www/html# composer create-project --prefer-dist laravel/laravel intranet
root@4dbe4b26a581:/var/www/html# chmod 777 intranet/storage/ -Rf