Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:virtualizacion:docker:docker_compose:lemp

¡Esta es una revisión vieja del documento!


Docker Compose: nginx + PHP + 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

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

Ficheros

La estructura sería la siguiente:

├── config
│   ├── nginx
│   │   ├── site.conf
│   ├── php
│   │   ├── Dockerfile
├── docker-compose.yml
  • 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

version: '3'

services:
  webserver:
    image: nginx:alpine
    # For different app you can use different names. (eg: )
    #    container_name: web-server
    volumes:
      # app source code
      - ./app:/usr/share/nginx/html
      - ./config/nginx/site.conf:/etc/nginx/conf.d/default.conf
      # db data persistence
    ports:
      - 8080:80
  php:
    # image: php:fpm-alpine
    build: .
    volumes:
      - ./app:/usr/share/nginx/html
  database:
    image: mariadb:focal
    environment:
      - MYSQL_ROOT_PASSWORD=abcd1234.
  adminer:
    image: adminer
    restart: always
    ports: 
      - 8123:8080

Contenido del fichero site.conf:

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    root /usr/share/nginx/html/;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

El nombre del host que se le pasa a fastcgi_pass debe coincidir con lo establecido en container_name.

Contenido del Dockerfile:

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

El directorio raíz desde el que el servidor web enviará los documentos está establecido en ./htdocs.

informatica/sistemas_operativos/virtualizacion/docker/docker_compose/lemp.1621166660.txt.gz · Última modificación: por tempwin