Desarrollo para Docker. Entorno local Parte 1

Quizás una de las razones principales por las que me gusta Docker es que elimina la necesidad de instalar varios servicios en una computadora. Estos incluyen el servidor web Apache o Nginx, las bases de datos y otros componentes de la infraestructura de la aplicación. Toda la infraestructura se registra en el archivo de configuración docker-compose.yml y se inicia con un solo comando junto con su aplicación. ¡Todo lo que un desarrollador que trabaja con un acoplador necesita es esencialmente un acoplador y un entorno de desarrollo favorito y TODO!

Para completar la narración adicional, todavía tiene que decir brevemente qué son los acopladores y sus conceptos básicos.

Por lo tanto, Docker debe considerarse como algún tipo de sistema de virtualización y contenedorización.
Uno de los conceptos básicos de docker es una imagen. Una imagen se puede comparar con un archivo (tal vez incluso un programa ejecutable), que contiene cierta información. Docker puede lanzar la imagen. Una imagen en ejecución se llama contenedor. Se pueden iniciar varios contenedores de la misma imagen.

Entonces, ¿qué contiene la imagen?

Puede ser una imagen de un sistema operativo. Por ejemplo, la imagen de ubuntu. Puede haber una imagen con una base de datos, un servidor web y php y con casi cualquier cosa. Para comenzar este conocimiento será suficiente para nosotros.

Se supone que el propio lector tiene instalado docker y docker-compose.

Comenzamos a implementar nuestro entorno de simple a más complejo.

Lección número 1. Instalación de Nginx


Intentemos instalar solo Nginx primero. Cree docker-compose.yml con el siguiente contenido:

version: '3.0' services: nginx: image: nginx ports: - 80:80 

A continuación, ejecute el comando docker-compose up -d y debería aparecer lo siguiente en respuesta:

 Creating network "lesson1_default" with the default driver Creating lesson1_nginx_1 ... done 

Ingresamos http: // localhost / en la barra de direcciones del navegador y el saludo "¡Bienvenido a nginx!" Debe ser visible para nuestros ojos. Si es así, estás en el camino correcto.

¿Qué está pasando aquí?

Para comprender la estructura del archivo de redacción, recomiendo consultar la documentación oficial , aunque es la mejor fuente de información en inglés. La documentación describe todas las opciones posibles que se pueden utilizar.

Analicemos el archivo presentado:

  • version: al principio, se declara la versión del archivo de redacción. En lugar de 3.0, puede especificar 2.0. Menos ya no es compatible. Las opciones en el archivo de redacción que están disponibles para su uso dependen de la versión.
  • servicios - anuncio de servicios
  • nginx: el nombre de nuestro servicio, se establece arbitrariamente a su discreción. En este ejemplo, coincide con el nombre de la imagen.
  • image: nginx: el nombre de la imagen a usar.
  • puertos: la directiva declara el reenvío de puertos. 8080: 80: esta entrada significa que el puerto abierto 80 del contenedor corresponderá al puerto 8080 en la máquina host en la que se está ejecutando la ventana acoplable. En el ejemplo del archivo, el puerto 80 en el contenedor está conectado al puerto 80 en su computadora.

Examinaremos la declaración de la imagen con más detalle, la directiva image: nginx.

El repositorio principal de todas las imágenes es el Docker Hub. Hay muchas imágenes preparadas diferentes allí (puede recopilar las suyas, pero más sobre eso más adelante). La imagen nginx declarada es una de ellas.

En cuanto a los puertos "hacia adelante". Si especifica una coincidencia 80:80, como en el ejemplo anterior, nginx estará disponible en localhost: 80 o solo localhost. Si el puerto 80 ya está ocupado, puede especificar 8080: 80. Entonces el sitio estará disponible en localhost: 8080. Y en consecuencia, si olvidó por completo especificar esta directiva de puertos, el puerto estará disponible solo dentro del contenedor y nginx ya no será accesible a través del navegador.

El contenedor está funcionando. ¿Y cómo trabajar realmente con él?

La instalación de un servidor web supone que queremos usarlo para recibir y ver páginas html del sitio. Hay una pregunta ¿Cómo puedo transferir cualquier archivo html a un contenedor? Los volúmenes nos ayudarán con esto

volúmenes


Traigamos nuestro docker-compose.yml al siguiente formulario:

 version: '3.0' services: nginx: image: nginx ports: - 80:80 volumes: - ./html:/usr/share/nginx/html 

La directiva de volúmenes apareció de la nueva, que dice que la carpeta local ./html se está montando en el contenedor en la dirección / usr / share / nginx / html.

Al montar, la carpeta en la dirección especificada dentro del contenedor se reemplaza por la carpeta de la computadora local.

Para que funcione, cree la carpeta html en el mismo nivel que el archivo docker-compose.yml y agregue el archivo index.html con texto libre. Por ejemplo, ¡Hola de Docker!

Y recreamos el contenedor con el mismo comando docker-compose up -d
Docker vuelve a crear el contenedor.

 Recreating lesson1_nginx_1 ... done 

Verifique el resultado en el navegador. Y vemos: ¡Hola desde Docker! Todo salió bien.

Es importante tener en cuenta que la carpeta montada está disponible para cambios en tiempo real. Es decir si cambiamos el texto en el archivo index.html o agregamos un nuevo archivo a la carpeta, entonces todos estos cambios estarán disponibles inmediatamente dentro del contenedor. Esta importante función le permite realizar el desarrollo a través de la ventana acoplable. Realizamos cambios en nuestra computadora en archivos montados, carpetas, y se muestran inmediatamente en el contenedor acoplable.

Parte 2 - Nginx + PHP + MySql + phpMyAdmin

Source: https://habr.com/ru/post/459972/


All Articles