Skip to content

Aplicación web que sirve para recibir notificaciones actualizadas cada "X" tiempo de forma automática por medio de PHP, SQL y AJAX.

Notifications You must be signed in to change notification settings

FranciscoJesusGata/automaticNotificationUpdate

Repository files navigation

automaticNotificationUpdate

Aplicación web que sirve para recibir notificaciones actualizadas cada x tiempo de forma automática por medio de PHP, SQL y AJAX.

Dockerizar app

Dockerizar por comandos

Imagenes necesarias nginx:latest, php:7-fpm y mysql:5.7 (Utilizo la versión 5.7 porque con el mysqli_connect() no está actualizado para la última versión.

Primero habrá que crear la base de datos a la que se conectará nuestra app:

docker run -d -p 3306:3306 --name db -e MYSQL_ROOT_PASSWORD=password mysql:5.7

Mapeamos el puerto 3306 porque es el que utiliza mysql para escuchar peticiones de un cliente externo.

Establecemos una variable de entorno llamada MYSQL_ROOT_PASSWORD para estableces una contraseña para root.

Crear base de datos

Para conectar con el contendor MySQL desde el host necesitaremos el siguiente comando de docker

docker exec -it db mysql -u root -p

El comado sirve para conectarse a la base de datos desde el usuario root, especificando que vas a pasar una contraseña.

El código SQL utilizado para esta app es:

CREATE DATABASE notificaciones
CHARACTER SET utf8
COLLATE utf8_spanish_ci;

USE notificaciones;

CREATE TABLE comentarios(
    id int(3) AUTO_INCREMENT,
    text varchar(140) NOT NULL,
    fecha_publi timestamp DEFAULT CURRENT_TIMESTAMP,

    CONSTRAINT PK_Comentarios PRIMARY KEY(id)
);

Crear servidor web

Antes de levantar el contenedor NGINX necesitaremos un contendor PHP al que se conectará para ejecutar los documentos PHP. Para levantar el contendor PHP...

docker run -d --name php --link db:mysql_db -v /complete/centos/app-php:/app php:7-fpm

Conectamos el contenedor de PHP con el de MYSQL para que el programa encuentre el host en el archivo /etc/hosts y montamos un volumen que conecte nuestra carpeta con la carpeta /app donde tanto el contendor PHP como el contenedor NGINX van a buscar el código.

Como las funciones y métodos de MySQLi no son propios de PHP, sino que son extensiones, tedremos que instalarlas:

docker exec -ti php docker-php-ext-install mysqli
docker exec -ti php docker-php-ext-enable mysqli
docker restart php

Ya instalador y configurado el contendor PHP pasamos a configurar el contenedor NGINX.

Para levantarlo ejecutamos:

docker run -d --name web --link php --link db:mysql_db -p 8080:80 -v /home/centos/app-php:/app -v /home/centos/app.conf:/etc/nginx/conf.d/app.conf nginx

Vale, esto tiene más miga que los anteriores comandos. Para empezar tenemos que conectar con el contendor de MySQL al que he llamado en el código mysql_db, lo que añadirá en documento de hosts la ip con el alias especificado. Tambien conectamos con el contenedor PHP que será el encargado de ejecutar el código PHP.

Montamos dos volúmenes, el primero, al igual que con el contendor PHP, se trata del código de nuestra aplicación. El segundo es la configuración del sitio web que NGINX carga en la configuración principal.

El documento puede llamarse se cualquier manera pero es importante que tenga la extensión .conf. Y este es el contenido del documento:

server {
    location / {
        root   /app;
        index  ./HTML/index.html;
    }

    location /comment.html{
        root   /app/HTML;
    }
    # redirect server error pages to the static page /50x.html

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on php:9000

    location ~ \.php$ {
        root           /app;
        fastcgi_pass   php:9000;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Una vez levantados los contenedores entramos en Firefox con la dirección http://127.0.0.1 o 127.0.0.1:8080

Dockerizar con Compose

Creamos el documento docker-compose.yml y establecemos los servicios

Servicio web y php

Lo primero es crear un servicio web que se levante partiendo de NGINX. Mapeamos el puerto 80 con el 8080 y lo linkeamos a los contenedores PHP y MySQL.

Como no puede funcionar sin estar levantados los otros dos servicios le indicamos a Docker que nuestro servicio depende de los otros dos con depends_on, que hará que no se levante el contenedor si antes no se han levantados los contenedores de los que depende.

About

Aplicación web que sirve para recibir notificaciones actualizadas cada "X" tiempo de forma automática por medio de PHP, SQL y AJAX.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published