‫Todo bien. Veamos algunos ejemplos más de Dockerfile.
‫En nuestro repositorio que has descargado de mi Github, veamos la muestra número 2 de Dockerfile.
‫Esta vez, en realidad tenemos dos archivos.
‫Tenemos el archivo Docker. Y ahora tenemos un índice. html.
‫Súper simple. Hola Mundo. HTML.
‫No es realmente importante entender el HTML.
‫Solo vamos a copiarlo en la imagen de nuestro contenedor mientras lo estamos construyendo.
‫Si miramos el archivo Docker, verás en este caso que estamos usando Nginx como nuestro
‫comando FROM.
‫No estamos construyendo nuestro propio Nginx porque, idealmente, si puede usar una imagen oficial para
‫realizar el trabajo desde Docker Hub, le será mucho más fácil mantener este Dockerfile y
‫mantenerlo funcionando bien.
‫En escenarios más simples, muy a menudo la imagen oficial es el trabajo. Pero a medida que crezca y agregue complejidad a
‫su entorno y a sus sistemas, probablemente encontrará que necesita agregar software personalizado adicional, o cambiar
‫la forma en que se inicia, o agregar scripts para que modifique la configuración.
‫Pero cuando empiezo un nuevo proyecto greenfield, o si estoy convirtiendo alguna aplicación antigua, siempre empiezo
‫con las imágenes oficiales de Docker Hub. Entonces, una vez que toco algunas barricadas y ya no
‫puedo usar esa imagen, podría volver a Docker Hub y echar un vistazo más y ver si hay
‫algo personalizado que sea realmente popular, en el que pueda confiar, y mirar y ver si va a resolver mi problema
‫Pero no hay nada de malo en construir uno propio.
‫Es solo más trabajo y más mantenimiento con el tiempo.
‫Así que aquí es super simple. Tenemos tres estrofas.
‫Has visto el FROM antes. Y esta vez tenemos el WORKDIR.
‫Ahora eso es básicamente solo ejecutar un cambio de directorio de espacio cd. Por lo tanto, es posible que sienta la tentación de utilizar el comando ejecutar
‫y simplemente escriba ejecutar cd en este directorio y luego haga algunas cosas. Pero realmente la mejor práctica para Dockerfiles
‫es usar siempre una estrofa WORKDIR separada para cada vez que se cambian los directorios.
‫Entonces, si su archivo se vuelve un poco complejo y tiene que moverse hacia adelante y hacia atrás
‫en su contenedor para hacer cosas mientras está construyendo, siempre quiere usar el WORKDIR porque es mucho más fácil describir en el
‫archivo Docker lo que está haciendo.
‫En este caso, lo que estamos haciendo aquí es que estamos cambiando al directorio Nginx
‫predeterminado para sus archivos HTML.
‫En la configuración predeterminada en Docker Hub, Nginx actúa solo como un servidor web, y solo sirve
‫archivos estáticos directamente desde el disco del contenedor.
‫La última estrofa aquí, tenemos, es la copia. Y esta es la estrofa que siempre utilizará para copiar
‫su código fuente de su máquina local, o sus servidores de compilación, en sus imágenes de contenedor.
‫En este caso, solo estamos tomando nuestro índice simple. html y estamos sobrescribiendo el archivo en el directorio
‫predeterminado de Nginx para que sea nuestra página de inicio personalizada para el servidor web.
‫Antes de construir esto, notarás que nos faltan las estrofas requeridas, como el cmd.
‫Entonces, ¿cómo podemos salimos con la suya?
‫Bueno, ya hay un cmd especificado en la imagen FROM.
‫Y cuando usamos FROM, heredamos todo del Dockerfile del que estamos 'pasando', si eso es incluso una palabra.
‫Así es como puede encadenar archivos Docker para que las imágenes dependan de otras
‫imágenes que dependen de otras imágenes.
‫Todo bien. Veamos cómo funciona esto.
‫Antes de construir esto, recordemos rápidamente qué hace un servidor Nginx predeterminado.
‫Vamos a hacer un contenedor de acoplador rápido ejecutar -p 8080, y no vamos a necesitar esto por mucho tiempo, así que vamos a hacer un --rm para
‫que se elimine al salir. No nos importa el nombre. Simplemente vamos
‫a ejecutar Nginx. Si nos dirigimos a nuestro navegador y escribimos localhost, vemos
‫la página de índice predeterminada de Nginx.
‫DE ACUERDO.
‫Recordemos eso, y luego abandonemos este contenedor y ahora vamos a construir
‫nuestra versión de Nginx con nuestro archivo de código fuente adicional.
‫DE ACUERDO.
‫Este debería realmente ir realmente rápido.
‫Usted nota que solo tomó unos segundos. Eso es porque ya teníamos Nginx en nuestro caché de imágenes. Y todo lo que estaba
‫ejecutando era copiar un archivo muy pequeño y cambiar el directorio de trabajo.
‫Ahora ejecutemos el comando exacto que acabamos de ejecutar para Nginx. Solo que esta vez, vamos a
‫usar esta nueva imagen que acabamos de construir.
‫Cambia a nuestro navegador y actualiza, y genial.
‫Nuestro índice HTML personalizado se ejecuta allí y nuestro contenedor funciona.
‫Si hacemos una imagen rápida ls, podemos ver nuestra última imagen allá arriba.
‫Si realmente queríamos enviar esto a Docker Hub, funciona de la misma manera que antes.
‫Solo necesitamos volver a etiquetarlo. Entonces podemos hacer la etiqueta de imagen de Docker.
‫Si recuerda el comando de ayuda, podemos ver el formato y siempre es el
‫que estamos etiquetando y la etiqueta que queremos que se llame. Así que la etiqueta de imagen docker nginx con html es lo último.
‫Y luego tendré que llamarlo bretfisher ... como eso.
‫Entonces, si vuelvo a hacer una imagen del acoplador, verás que esas dos líneas superiores son la misma ID de imagen nuevamente y
‫solo se etiquetaron de manera diferente.
‫Ahora podría hacer un empuje de docker con ese repositorio y etiqueta, y podría conseguirlo en Docker Hub.