Saltar al contenido

Configuración de PHP-FPM, Nginx, Mariadb en CentOs usando Docker

Solución:

Los contenedores Docker están diseñados para tener un solo servicio ejecutándose dentro de ellos, no para ser un sistema virtual completo (como puede ver con la caja virtual y las máquinas virtuales).

Esto significa que, idealmente, desea un solo recipiente para cada:

  • Nginx
  • PHP
  • Mariadb

Además, la imagen de la ventana acoplable de Centos está diseñada como una base para que otros hereden o realicen una tarea específica del sistema operativo (por ejemplo, llamadas cURL o un shell) que no es realmente lo que necesita.

Recomendaría para su caso, usar docker-compose, que le permitirá configurar fácilmente contenedores intermedios y administrarlos todos como un solo proyecto.

Recomendaría un docker-compose.yml configuración de archivo como tal:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./src:/(nginx config root folder)
      - ./config/site.conf:/etc/nginx/conf.d/site.conf
    links:
      - php
      - mariadb

  php:
      image: php:7-fpm
  mariadb:
      image: mariadb
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: example

Entonces tendrías un /config/ carpeta en la carpeta de su proyecto, que necesitará una site.conf archivo para la configuración de nginx.

También necesitará un /src/ carpeta en la carpeta de su proyecto, que contendría todo el código php / web para su proyecto.

El volumen aumenta en el docker-compose.yml file los cargará en el contenedor por usted. Los montajes de volumen funcionan por mapeo host folder path:container folder path cuando algo cambia en uno, se actualiza en el otro, casi como si se estuviera copiando / pegando. Tenga en cuenta que es posible que deba actualizar los permisos de los archivos.

Para el Mariadb podrías agregar otro volume para mapear los archivos de datos en el contenedor a su carpeta de host. Además, puede abrir el puerto mysql para poder interrogar la base de datos con una herramienta como mysql workbench agregando un ports sección para puerto 3306 como se muestra en el web sección. El valor de mysql_root_password establecerá la contraseña del usuario root.

Puede iniciar esto con el comando docker-compose up desde el directorio de su proyecto.

Cuando necesite reiniciar manualmente nginx (u otros servicios), debe detenerse e iniciar los contenedores. puedes hacer eso con los comandos:

  • docker-compose up – Arranca contenedores
  • docker-compose down – Detiene contenedores

Si desea enviar el contenedor en ejecución a un segundo plano (para que no ocupe una ventana de terminal), debe usar: docker-compose up -d

Avíseme si tiene alguna pregunta o si algo no está claro, ¡me complacerá actualizar mi respuesta!

Puede usar mi archivo docker-compose (mariadb, php-fpm, nginx)

https://github.com/matchish/skeleton

Solo corre

docker-compose up -d

y verá “Hola mundo” en http: // localhost Puede editar las variables de entorno en el archivo .env

Además, recomiendo https://laradock.io/

Puede ejecutar terminal en cualquier servicio

docker-compose exec db bash
docker-compose exec php-fpm bash
docker-compose exec nginx bash 

Además, puede agregar el archivo de inicio de la base de datos. Leer el manual en este archivo https://github.com/matchish/skeleton/blob/master/mariadb/docker-entrypoint-initdb.d/createdb.sql.example

Para reiniciar los servicios, detenga el contenedor y vuelva a iniciarlo.

docker-compose stop nginx 
docker-compose up -d nginx

si necesita editar nginx conf, debe reconstruir la imagen

docker-compose build nginx 
docker-compose up -d

Si necesita phpmyadmin, puede agregarlo al archivo de composición

phpmyadmin:
  image: phpmyadmin/phpmyadmin
  environment:
    PMA_HOST: db
    PMA_PORT: 3306
  ports:
    - '8181:80'

Ahora puede acceder a él en http: // localhost: 8181

La forma más sencilla de utilizar componer en producción es simplemente copiar el directorio del proyecto a un servidor de producción y ejecutar docker-compose up -d. Puedes excluir logs directorio. Es una buena práctica tener varios archivos de redacción (https://docs.docker.com/compose/production/)

No olvide conservar los permisos de los archivos cuando se implementen en producción

Docker-compose está bien, pero no es el más fácil de usar. Realmente debería mirar en Lando, ya que hace que los entornos de desarrollo sean muy fáciles de configurar. Es básicamente una capa de usabilidad sobre Docker y seguro que es elegante.

Antes de continuar, debo mencionar que Lando no funciona realmente con Windows 10 Home porque la versión de Windows de Docker usa Hyper-V, que solo viene con Win10 Pro. Sin embargo, Mac y Linux funcionan bien.

Lando tiene “recetas” que son puntos de partida que reducen la cantidad de configuración que tiene que escribir. Si está desarrollando un sitio Drupal o WordPress, hay recetas para eso. O si está escribiendo algo desde cero, también hay recetas LAMP y LEMP.

Todo lo que tiene que hacer después de instalar Lando es crear un archivo de configuración para su aplicación y ejecutarlo. Hay un lando init comando que genera una configuración haciéndole algunas preguntas, pero prefiero simplemente escribir el .lando.yml config a mano, ya que no es difícil.

Entonces, si desea una configuración de LEMP, su configuración se vería así:

name: put-your-site-name-here
recipe: lemp
config:
  php: '7.1'        # optional; defaults to the latest version
  webroot: web      # optional; defaults to the same directory as this file
  database: mariadb # technically optional but you did say you wanted this
  xdebug: true      # optional
  conf:             # optional; specify your own configs for nginx and/or php as follows
    server: my-config-path/nginx.conf
    php: my-config-path/php.ini

¡y eso es! Vierta eso en un .lando.yml archivo, ejecutar lando starty tendrás una aplicación en ejecución en poco tiempo.

Actualmente, la última versión beta es la versión más estable, pero no hay nada de qué preocuparse. Lo uso en el trabajo todos los días. Descárgalo desde GitHub.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *