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

316
Vistas
Montar un volumen sobrescribe los archivos almacenados en la imagen de Docker

Estoy tratando de contener el front-end de mi sitio web y automatizar su implementación. Mi objetivo es poder generar y alojar una nueva imagen cuando se envía un cambio, y hacer que el servidor la busque automáticamente y reinicie el contenedor. Estos son los pasos que estoy tomando:

  1. Creo la imagen creando primero mi aplicación Node y luego agrupando los archivos de configuración de distribución y nginx en la última imagen de linuxserver/letsencrypt . Este es el Dockerfile:

     # Use the NodeJS image as builder FROM node:alpine AS builder # Create the workspace RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Copy the package file and source code COPY package.json /usr/src/app COPY . ./ # Install dependencies RUN npm install # Build the application RUN npm run build # The nginx server, this builds the final image FROM linuxserver/letsencrypt # Copy the nginx configuration COPY ./config/nginx.conf /config # Copy the output of the builder COPY --from=builder /usr/src/app/dist /config/www # Inform Docker to listen on port 443 and 80 EXPOSE 443 80
  2. Esta imagen se carga en el registro de paquetes de GitHub y busco actualizaciones usando Watchtower .

  3. La imagen se inicia con este archivo docker-compose:

     version: "3" services: ... frontend: image: [IMAGE] container_name: frontend cap_add: - NET_ADMIN environment: - PUID=1000 - PGID=1000 - TZ=[TIMEZONE] - URL=[URL] - SUBDOMAINS=www, - VALIDATION=http ports: - 443:443 - 80:80 volumes: - ./frontend:/config restart: unless-stopped ...

El problema es que los archivos que se empaquetaron en la imagen usando la instrucción COPY se sobrescriben cuando uso la siguiente línea en mi docker-compose:

 volumes: - ./frontend:/config

Si elimino esa sección de mi archivo docker-compose, todo funciona bien, sin embargo, esta no es una solución porque esa carpeta almacena datos importantes.

He leído que montar un volumen sobrescribe por completo cualquier dato anterior, sin embargo, me gusta el hecho de que puedo cargar fácilmente la imagen en mi servidor y tener todos los archivos necesarios ya integrados. ¿Hay algo que pueda hacer para solucionar mi problema o estoy malinterpretando/usando mal las imágenes de la ventana acoplable?

Intenté configurar el volumen para leer solo como se sugiere aquí , sin embargo, esto no funcionó y, en cambio, provocó que la imagen se detuviera y reiniciara continuamente.

También he leído brevemente acerca de los montajes de enlace y me pregunto si serán de alguna utilidad.

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

0

Se espera este comportamiento. Los montajes de Docker funcionan de la misma manera que los montajes de Linux, es decir, sobrescriben el contenido del directorio de destino con el contenido del directorio de origen.

Mi sugerencia es utilizar otro directorio de destino para su volumen, por ejemplo

 volumes: - ./frontend:/someotherdir

Y luego ajuste su configuración nginx para buscar archivos JS allí.

over 4 years ago · Santiago Trujillo Denunciar

0

Descubrí que podía retener los datos en la imagen creando primero un volumen con nombre :

 volumes: frontend_data:

Y luego montando el contenedor a ese volumen:

 services: frontend: ... volumes: - frontend_data:/config ...
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