Construyendo una infraestructura Docker para aplicaciones web con Nginx, PHP-FPM, y MariaDB
13/05/2023
|Por Yoné Rocha
Construir una infraestructura Docker para mi aplicación web con Nginx, PHP-FPM y MariaDB es sencillo. Utilizo un archivo de Docker Compose para definir y orquestar los servicios clave:
- Nginx Proxy: Utilizo la imagen jwilder/nginx-proxy como proxy inverso para redirigir las solicitudes a los servicios correspondientes. Configuro volúmenes para gestionar certificados SSL, vhosts, archivos HTML y parámetros de seguridad.
- Nginx: Empleo la imagen oficial de Nginx para servir archivos HTML y comunicarme con Nginx Proxy. Los volúmenes aseguran la persistencia de mis archivos y la configuración de vhosts.
- PHP-FPM: Hago uso de la imagen imagen oficial de PHP-FPM para ejecutar PHP. Monto un volumen para mantener mis archivos PHP.
- MariaDB: Configuro un servicio de base de datos utilizando la imagen oficial de MariaDB. Defino variables de entorno para establecer la contraseña de root, el nombre de la base de datos, el usuario y la contraseña. Monto un volumen para garantizar la persistencia de mis datos.
Personalizo la configuración según mis necesidades y ¡listo! Tengo una infraestructura Docker completa y escalable para mi aplicación web.
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | version: '3.8' services: nginx-proxy: image: jwilder/nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - certs:/etc/nginx/certs - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /etc/nginx/dhparam:/etc/nginx/dhparam restart: always networks: - my-network nginx: image: nginx:latest environment: - VIRTUAL_HOST=undominio.com, www.undominio.com volumes: - html:/usr/share/nginx/html - vhost:/etc/nginx/vhost.d - /etc/nginx/dhparam:/etc/nginx/dhparam restart: always networks: - my-network php: image: php:fpm volumes: - html:/var/www/html restart: always networks: - my-network db: image: mariadb environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: your_database_name MYSQL_USER: your_database_user MYSQL_PASSWORD: your_database_password volumes: - db:/var/lib/mysql restart: always networks: - my-network networks: my-network: driver: bridge ipam: driver: default config: - subnet: 172.20.199.1/24 volumes: certs: vhost: html: db: |