Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

636
Vistas
Cree archivos/carpetas en docker-compose build o docker-compose up

Estoy dando mis primeros pasos en Docker, así que intenté crear un Dockerfile que crea un index.html simple y un directorio de imágenes (ver el código a continuación)

Luego ejecuto docker-compose build para crear la imagen y docker-compose-up para ejecutar el servidor. Pero no obtengo ningún archivo index.html o imágenes de carpeta.

Este es mi Dockerfile:

 FROM php:apache MAINTAINER brent@dropsolid.com WORKDIR /var/www/html RUN touch index.html \ && mkdir images

Y este es mi docker-compose.yml

 version: '2' services: web: build: .docker/web ports: - "80:80" volumes: - ./docroot:/var/www/html

Esperaría que esto creara una carpeta docroot con un directorio de imágenes y un index.html, pero solo obtengo el docroot.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La imagen contiene esos archivos.

El Dockerfile contiene instrucciones sobre cómo crear una imagen. La imagen que creaste a partir de ese Dockerfile contiene index.html e images/ .

Pero, los sobrepasaste en el contenedor.

En tiempo de ejecución, creó un contenedor a partir de la imagen que creó. En ese contenedor, montó el directorio externo ./docroot como /var/www/html .

Un montaje ocultará lo que haya antes en esa ruta, por lo que este montaje ocultará el contenido anterior de /var/www/html , reemplazándolo con lo que esté en ./docroot .

Poner cosas en tu montura

En los comentarios que preguntaste

¿Existe la posibilidad de montar primero y luego crear archivos o algo así? ¿O es eso imposible?

De la forma en que ha hecho las cosas, los montó sobre sus archivos originales, por lo que ya no son accesibles una vez que se crea el contenedor.

Hay un par de formas en las que puedes manejar esto.

Cambiar su ruta en la imagen.

Si coloca estos archivos en una ruta diferente en su imagen, el montaje no los sobrescribirá.

 WORKDIR /var/www/alternate-html RUN touch index.html \ && mkdir images WORKDIR /var/www/html

Ahora, en tiempo de ejecución todavía tendrá este montaje en /var/www/html , que contendrá el contenido del directorio externo. Que puede o no ser un directorio vacío. Puede decirle al contenedor al inicio que ejecute un script y copie las cosas allí, si eso es lo que desea.

 COPY entrypoint.sh /entrypoint.sh RUN chmod 0755 /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]

(Esto supone que no tiene un punto de entrada definido; si lo tiene, tal vez solo necesite ajustar su script existente).

punto de entrada.sh:

 #!/bin/sh cp -r /var/www/alternate-html/* /var/www/html exec "$@"

Esto ejecutará el comando cp y luego entregará el control a cualquiera que sea el CMD para esta imagen.

Manejándolo externamente

También tiene la opción de simplemente completar previamente los archivos que desea en ./docroot externamente. Luego estarán allí cuando el contenedor se inicie y agregue el montaje del directorio.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda