Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

643
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda