Curso de Symfony Framework

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

Cuando llego el momento de preparar mi entorno para ensuciarme las manos con el código Mauro empezó a usar Homestead pero yo prefería virtualizar mi entorno de trabajo con Docker y supongo que muchos de ustedes también lo querrán hacer por eso decidí realizar este tutorial, espero que este tutorial los ayude

Requisitos

El único requisito es que sepas lo básico de Docker y que lo tengas instalado, si aún no sabes de Docker y los infinitos beneficios que puedes obtener al usarlo te recomiendo que tomes el curso de fundamentos de Docker

Archivos y directorios

Lo único que necesitas es replicar este sistema de archivos en la carpeta en la cual ejecutes tu servidor
Image 3.png

docker-compose.yml

En este archivo colocaremos la configuración necesaria para construir nuestros “Servicios”, empecemos con el servidor en este caso yo voy a usar nginx

version: '3'

services:
    nginx:
        build:
            context: .
            dockerfile: Dockerfile-nginx
        volumes:
            - ./symfony/:/var/www/symfony/
        ports:
            - 8001:80
        networks:
            - symfony
networks:
    symfony:

Adicionalmente colocaré una red llamada symfony para poder conectar los diferentes contenedores entre si, a continuación debemos añadir el servicio php

version: '3'

services:
    nginx:
        build:
            context: .
            dockerfile: Dockerfile-nginx
        volumes:
            - ./symfony/:/var/www/symfony/
        ports:
            - 8001:80
        networks:
            - symfony
    php:
        build:
            context: .
            dockerfile: Dockerfile-php
        environment:
            APP_ENV: dev
        volumes:
            - ./symfony/:/var/www/symfony/
        networks:
            - symfony
        depends_on:
            - mysql
networks:
    symfony:

Por último necesitaremos una base de datos yo usaré MySQL, el código que necesitamos es…

version: '3'

services:
    nginx:
        build:
            context: .
            dockerfile: Dockerfile-nginx
        volumes:
            - ./symfony/:/var/www/symfony/
        ports:
            - 8001:80
        networks:
            - symfony
    php:
        build:
            context: .
            dockerfile: Dockerfile-php
        environment:
            APP_ENV: dev
        volumes:
            - ./symfony/:/var/www/symfony/
        networks:
            - symfony
        depends_on:
            - mysql
    mysql:
        image: mysql
        command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci','--default-authentication-plugin=mysql_native_password']
        ports:
            - 3306:3306
        volumes:
            - ./mysql:/var/lib/mysql
        networks:
            - symfony
networks:
    symfony:

✨Listo?

No aún no esta, si estuviste atento a lo que muy probablemente solo copiaste y pegaste añadimos un contexto para la construcción y configuración para las imágenes de php y nginx

Dockerfile-php

FROM php:fpm-stretch

RUN apt-get update && apt-get install -y

RUN apt-get update && apt-get install -y \
        git \
        zlib1g-dev \
        libxml2-dev \
        libzip-dev \
    && docker-php-ext-install \
        zip \
        intl \
		mysqli \
        pdo pdo_mysql
    
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
COPY symfony/ /var/www/symfony
WORKDIR /var/www/symfony/

Lo que hacemos es usar una imagen de docker hub e instalamos un par de herramientas como composer que es un manejador de dependencias para php

Dockerfile-ngnix

FROM nginx:latest
COPY ./build/nginx/default.conf /etc/nginx/conf.d/

Adicional a esto necesitamos la configuración de server

default.conf

server {
    listen 80;
    root /var/www/symfony/public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php(/|$) {
        # Connect to the Docker service using fpm
        fastcgi_pass php:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }
    location ~ \.php$ {
        return 404;
    }

    error_log /dev/stdout info;
    access_log /var/log/nginx/project_access.log;
}

Levantar los servicios

Desde la terminal ejecuta el comando dentó de la ruta …/symfony-docker/

docker-compose up -d --build

Esto construirá y creará los contenedores que puedes ver usando docker-compose ps

Instalación de Sympony

Ahora llego lo bueno, debemos entrar al contenedor de php que creamos usando

docker-compose exec php bash

Luego debemos configurar git porque si no la creación del proyecto puede fallar, cosas raras de composer

Ejecutamos en la consola del contenedor php, remplazando lógicamente por nuestros datos

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

y luego si podemos usar

composer create-project symfony/website-skeleton .

y si vas a 127.0.0.1:8001 debes ver algo así
Image 4.png

No olvides que puedes cambiar los puertos por si usas xampp o algo asi para trabajar en local, todo está en el archivo docker-compose.yml

Curso de Symfony Framework

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados