Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:virtualizacion:docker:docker_compose:lemp

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
informatica:sistemas_operativos:virtualizacion:docker:docker_compose:lemp [2021/05/16 11:20] – creado tempwininformatica:sistemas_operativos:virtualizacion:docker:docker_compose:lemp [2021/05/16 14:07] (actual) – [site.conf] tempwin
Línea 2: Línea 2:
  
 Despliegue de una arquitectura multicontenedor compuesta por un servidor web Ngin, un intérprete de PHP y un motor de base de datos MariaDB Despliegue de una arquitectura multicontenedor compuesta por un servidor web Ngin, un intérprete de PHP y un motor de base de datos MariaDB
 +
 +===== Imágenes =====
  
   * Imagen Nginx: https://hub.docker.com/_/nginx   * Imagen Nginx: https://hub.docker.com/_/nginx
   * Imagen PHP: https://hub.docker.com/_/php   * Imagen PHP: https://hub.docker.com/_/php
   * Imagen MariaDB: https://hub.docker.com/_/mariadb   * Imagen MariaDB: https://hub.docker.com/_/mariadb
 +  * Imagen de Adminer: https://hub.docker.com/_/adminer
 +
 +<WRAP center round info 60%>
 +La imagen de Adminer no es necesaria, aunque la incluyo por la comodida de tener una aplicación web para gestionar la base de datos y así no depender de tener instalado un cliente de base de datos
 +</WRAP>
 +
 +===== Ficheros =====
 +
 +La estructura sería la siguiente:
 +
 +<code>
 +├── app
 +├── docker
 +│   ├── nginx
 +│   │   ├── site.conf
 +│   ├── php
 +│   │   ├── Dockerfile
 +├── docker-compose.yml
 +</code>
 +
 +  * ''app'': directorio que va a servir nginx.
 +  * ''nginx/site.conf'': configuración del virtual host de nginx.
 +  * ''php/Dockerfile'': Dockerfile para adaptar la imagen de PHP a nuestro gusto.
 +  * ''docker-compose.yml''
 +==== docker-compose.yml ====
  
 <code yaml> <code yaml>
-version: '3.4'+version: '3'
  
 services: services:
   webserver:   webserver:
-    container_name: lar-nginx 
     image: nginx:alpine     image: nginx:alpine
-    ports+    # For different app you can use different names. (eg) 
-      - "80:80"+    #    container_nameweb-server
     volumes:     volumes:
-      - ./htdocs:/usr/share/nginx/html+      # app source code 
 +      - ./app:/usr/share/nginx/html
       - ./config/nginx/site.conf:/etc/nginx/conf.d/default.conf       - ./config/nginx/site.conf:/etc/nginx/conf.d/default.conf
 +      # db data persistence
 +    ports:
 +      - 8080:80
   php:   php:
-    container_namelar-php +    # imagephp:fpm-alpine 
-    build+    build: .
-#      dockerfile: Dockerfile +
-      context: .+
     volumes:     volumes:
-    - ./htdocs:/usr/share/nginx/html+      - ./app:/usr/share/nginx/html 
 +  database: 
 +    image: mariadb:focal 
 +    environment: 
 +      - MYSQL_ROOT_PASSWORD=abcd1234. 
 +  adminer: 
 +    image: adminer 
 +    restart: always 
 +    ports:  
 +      - 8123:8080 
 </code> </code>
  
-Contenido del fichero ''site.conf'':+==== site.conf ====
  
-<code>+Configuración del virtual host de nginx. 
 + 
 +<code nginx>
 server { server {
     listen 80;     listen 80;
Línea 40: Línea 80:
         try_files $uri =404;         try_files $uri =404;
         fastcgi_split_path_info ^(.+\.php)(/.+)$;         fastcgi_split_path_info ^(.+\.php)(/.+)$;
-        fastcgi_pass lar-php:9000;+        fastcgi_pass php:9000;
         fastcgi_index index.php;         fastcgi_index index.php;
         include fastcgi_params;         include fastcgi_params;
Línea 53: Línea 93:
 </WRAP> </WRAP>
  
-Contenido del ''Dockerfile'':+==== Dockerfile ====
  
-<code yaml> +En este fichero modificaremos la imagen de base de PHP para adaptarlo a nuestros requisitos:
-FROM php:7-fpm-alpine +
-RUN docker-php-ext-install mysqli pdo_mysql  +
-# RUN docker-php-ext-install session +
-# RUN docker-php-ext-install pdo +
-</code>+
  
-El directorio raíz desde el que el servidor web enviará los documentos está establecido en ''./htdocs''.+<code Dockerfile> 
 +FROM php:fpm-alpine 
 + 
 +# Modificamos UID y GID del usuario www-data para que coincida con el 
 +# del usuario que ejecuta el servidor web en el contenedor con nginx 
 +# Si no fuese Alpine, se podría hacer con `usermod -u <UID> www-data` 
 +# Más info:  
 +# https://stackoverflow.com/questions/36824222/how-to-change-the-nginx-process-user-of-the-official-docker-image-nginx 
 + 
 +RUN deluser www-data && adduser -DH -h /home/www-data -s /sbin/nologin -u 101 www-data 
 +RUN docker-php-ext-install mysqli pdo_mysql 
 +</code>
informatica/sistemas_operativos/virtualizacion/docker/docker_compose/lemp.1621156843.txt.gz · Última modificación: por tempwin