‫En esta sección, hemos cubierto mucho sobre Swarm. Swarm, Stacks y Secrets son una especie de trilogía
‫de características increíbles que pueden hacer mucho más fácil la producción para nosotros.
‫Quiero mostrarte cómo sería si tomas tus archivos Compose, organízalos de varias maneras, y
‫esto es lo que
‫básicamente llamo vivir el sueño.
‫Resulta que puedes usar un solo archivo para hacer muchas cosas, pero a veces
‫tu complejidad aumenta y necesitarás varios archivos Compose.
‫Quiero correr rápido.
‫En realidad, no tienes que hacer esto tú mismo si no quieres hacerlo. Solo voy a mostrar un ejemplo de
‫cómo estos archivos de composición pueden funcionar juntos para construir su entorno sobre la marcha.
‫En este escenario, vamos a usar Docker compose para nuestro entorno de desarrollo local.
‫Vamos a utilizar una configuración y un archivo de compuertas para nuestro entorno de CI para realizar pruebas de integración.
‫Luego, cuando estemos en producción, vamos a usar esos archivos para la implementación de la pila
‫Docker para desplegar el entorno de producción con una pila. Por lo tanto, estoy en mi máquina local y vamos a utilizar el
‫ejemplo anterior del escenario de Drupal, con un servidor de base de datos y una interfaz web.
‫Tenemos el Dockerfile que hemos utilizado en nuestras asignaciones anteriores. personalizada, pero simple, con una plantilla.
‫Estamos reconstruyendo una configuración drupal
‫Entonces vamos a tener este archivo de composición predeterminado.
‫Esto se llama anular,
‫lo que estamos a punto de hacer. Una anulación es donde tengo el archivo Docker Compose estándar
‫y establece los valores predeterminados que son los mismos en todos mis entornos.
‫Luego, tengo este archivo de anulación que, de forma predeterminada, Docker Compose, si se llama con
‫este nombre exacto, Docker compone. anular. yml, automáticamente traerá esto cada vez que compongo una docker.
‫porque realmente queremos que los comandos escritos a mano que vamos a escribir sean más fáciles a nivel local.
‫Verá que en este escenario, estamos asumiendo el desarrollo local
‫Normalmente, en su entorno de CI, todo está automatizado, por lo que realmente no nos importa si esos comandos son
‫un poco más largos.
‫Pero lo que realmente queremos es que el docker fácil se resuelva.
‫Lo bueno es que Docker Compose leerá este archivo automáticamente y lo
‫aplicará por encima, o anulará cualquier configuración en el archivo Docker Compose yml.
‫Y entonces, noten que
‫no tengo el nombre de la imagen, porque eso ya está especificado aquí. usando Dockerfile en este directorio actual.
‫En este archivo de anulación, lo sustituyo diciendo que quiero construir la imagen localmente
‫Quiero crear un puerto en 8080 para el desarrollo local. Y estoy configurando algunos volúmenes, e incluso notará que le di un ejemplo aquí
‫de un montaje de enlace, donde podría estar haciendo un tema personalizado. Y quiero montar mi tema en mi host
‫en el contenedor como lo hicimos en secciones anteriores, para poder cambiarlo localmente y luego
‫verlo de inmediato en el servidor.
‫Y, por cierto, para este ejemplo, realmente no sé cómo desarrollar temas en Drupal.
‫No estoy exactamente seguro de que si cambio un archivo allí, se reflejará automáticamente.
‫la web, normalmente esta es la forma en que lo harías sin tener que detener e iniciar Compose todo el tiempo.
‫Solo quería mostrar un ejemplo de cómo cuando estás haciendo desarrollo en Aquí, debajo de postgres, tenemos la variable de
‫entorno y la configuración de Secret como antes. Tenemos los volúmenes definidos, y verá abajo, en
‫realidad tengo el
‫secreto basado en archivos porque cuando estamos haciendo desarrollo local, tenemos que usar el secreto basado
‫en archivos.
‫Las cosas se ponen un poco interesantes cuando miro este prod, o pruebo los archivos. La forma en que esto va
‫a funcionar es recordar que el. anular. yml es recogido automáticamente por la línea
‫de comandos de Docker Compose. que especificarlos manualmente.
‫En prod o test, voy a tener
‫Entonces para la prueba, vamos a tener que usar el comando -f.
‫Si recuerda de secciones anteriores, el -f es cuando hacemos una ventana publicitaria que queremos que
‫especifique un archivo personalizado. Te lo mostraré en un minuto.
‫Luego, en producción, ya que no vamos a tener realmente la línea de comando Docker Compose en un
‫servidor de producción, lo que vamos a hacer aquí es que realmente vamos a usar un comando docker compose config.
‫El comando config realmente hará una salida aplastando o combinando la salida de múltiples
‫archivos de configuración.
‫Entonces eso será realmente genial.
‫Muy rápido, el archivo de prueba solo tiene el drupal y el postgres.
‫Imagínese si esta era su solución de CI Jenkins CI o Codeship, donde quiero que construya la imagen
‫cada vez que comprometo mi código, y quiero llamarlo así, y quiero que esté en este
‫puerto para fines de prueba. Entonces voy a usar una contraseña falsa. Pero no necesito definir ninguno de los volúmenes porque
‫no voy a tratar de mantener los datos del volumen con nombre porque, de nuevo, es solo una plataforma de CI.
‫Tan pronto como pasa las pruebas o falla las pruebas, se deshará de todo.
‫datos ahí que provienen de un repositorio personalizado de Git o tal vez son una descarga de FTP.
‫Luego, en este escenario, es posible que vea que tengo este escenario de datos de muestra donde quizás en
‫su solución de CI, simplemente tiene bases de O sucede algo durante la inicialización de su
‫CI donde realmente descarga un archivo de base de datos. Y en lugar de tener que crear nuestra base de datos cada
‫vez que hacemos pruebas de CI, simplemente montaremos este directorio de datos de muestra en el lugar donde se supone que se encuentran nuestros
‫datos postgres.
‫Y de esa manera, podemos garantizar que tenemos los mismos datos de muestra cada vez que hacemos una prueba de CI.
‫No voy a entrar en eso más allá. Solo quería mostrar que ese podría ser el modo
‫en que este archivo para CI sería diferente.
‫Luego, en producción, tenemos todas nuestras preocupaciones de producción normales. Estamos especificando volúmenes para
‫nuestros datos específicos. Estamos especificando nuestro secreto. Y note abajo en la parte inferior, tenemos el secreto externo.
‫Porque ya vamos a haber introducido el secreto a través de la línea de comando, como lo hicimos
‫en la tarea anterior.
‫El punto aquí es que las tres configuraciones son diferentes de alguna manera, pero todas
‫se relacionan con la configuración central, o la configuración base, que solo define los dos servicios y sus imágenes.
‫Puedes ver aquí Aquí hay un recordatorio de cómo se ve.
‫Salgamos de esto y ejecutemos un par de comandos.
‫Si miro en este directorio, verás que tengo el archivo base y luego los tres archivos de anulación.
‫De nuevo, recuerde, que la anulación. yml es el predeterminado.
‫Si hago una ventana acoplable, lo que realmente hará aquí es usar la ventana acoplable. yml primero, y luego se superpondrá
‫a la anulación. yml uno encima. Quiero poner una -d para
‫poder echar un vistazo rápido después de que comenzó. Voy a hacer una inspección de docker en la imagen drupal.
‫Y lo que quería mostrarles fue aquí, tiene todos los montajes en la lista.
‫Así que sabemos que tomó el archivo de anulación porque el archivo de anulación fue donde definimos todos
‫estos montajes.
‫Entonces sabemos que lo entendió.
‫Obviamente, si no recogiera la base, ni siquiera sabría qué imágenes usar, por lo
‫que en realidad nos estaría quejándose y diciendo que el archivo Compose estaba incompleto.
‫Eso funcionó.
‫Vamos a hacer una caída muy rápido.
‫Si realmente íbamos a hacer el comando que necesitábamos para nuestra solución de CI, lo que tendríamos que
‫hacer en nuestra solución de CI era asegurarnos de que Docker Compose estuviera allí, instalado, y disponible para que pudiéramos
‫hacer los comandos de redacción de Docker. el archivo base siempre debe ser el primero.
‫Entonces podemos especificar el -f, y luego el orden de las f es que
‫Entonces, docker compone yml, luego docker redacta prueba.
‫Si hicimos esto con un up al final y una -d, y luego fui e inspeccioné ese mismo drupal,
‫notará que no hay monturas de unión.
‫Faltan por completo porque en el archivo de prueba no los especificamos.
‫En realidad, no necesitábamos que Drupal guardara información porque se iba a descartar al final
‫de nuestra ejecución de CI.
‫Y luego tercero, tenemos la configuración de producción.
‫La configuración de producción va a ser un poco diferente.
‫Voy a presionar la Flecha hacia arriba, y luego voy a hacer la prueba. En lugar de un comando de subida,
‫lo que quiero hacer aquí es una configuración.
‫Si solo mira la ayuda muy rápido para la configuración, solo tiene dos opciones y ninguna de
‫ellas es realmente relevante en esta situación.
‫Lo que queremos hacer es simplemente ejecutar la configuración por sí mismo. Lo que realmente va a hacer
‫es mirar ambos archivos y juntarlos en un solo archivo de composición equivalente.
‫Entonces, lo que podríamos hacer aquí es simplemente ejecutar este comando en alguna parte de nuestra solución de CI. con tu conocimiento, algo así.
‫Luego haz que salga a un archivo, tal vez Ese archivo de salida sería el que usaríamos
‫oficialmente en producción para crear o actualizar nuestra pila.
‫Sin embargo, quiero lanzar una pequeña advertencia aquí.
‫Esto es todo algo relativamente nuevo.
‫Sabemos que Secrets y Swarm Stacks son relativamente nuevos.
‫Solo tienen un par de meses.
‫A partir de esta grabación.
‫Entonces hay un par de asperezas.
‫Simplemente ejecutamos ese comando de configuración, y de hecho notarás que los secretos no estaban listados allí.
‫Ese es un error actualmente.
‫De hecho, estoy trabajando con el equipo de Docker para ver si no podemos aplacar ese error.
‫Entonces, cuando leas esto, puede que ya haya sido arreglado.
‫Asegúrese de inspeccionar esa salida de la línea de configuración antes de comenzar
‫la implementación en producción.
‫segundo lugar, la opción Compose Extends, que no analicé aquí, es otra forma de anular estos archivos
‫Compose en los que realmente usa el archivo de anulación y define una sección extensible allí.
‫En
‫Es un poco más declarativo, por lo que es más fácil de entender. Proporcionaré un enlace en las
‫referencias para esta sección. Solo sepa que la opción Extender todavía no funciona en las pilas de Enjambres.
‫No lo mencioné aquí porque realmente no le da el ciclo de vida completo de la aplicación
‫que esperábamos, pero espero que en algún momento hagan algo al respecto.
‫Al igual que agregarlo a Swarm o crear un mejor flujo de trabajo. Porque esa es realmente la idea a la que
‫intentamos llegar con todas estas herramientas, es tener un ciclo de vida completo y sencillo desde el desarrollo hasta la
‫prueba, la producción, con el mismo conjunto de configuraciones, en el mismo conjunto de imágenes .
‫Espero que esto te haga pensar en cómo podrías hacer tus aplicaciones de esta manera, y
‫cómo podrías ampliar tus propios archivos Compose para escenarios complejos.
‫Porque nada pone una sonrisa en mi cara más rápido con Docker que cuando veo que alguien ejecuta un comando
‫de una línea para hacer algo que anteriormente requería varios guiones para ejecutar.