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
