Mi entorno de desarrollo actual permite la recarga automática de código cada vez que cambia un archivo (es decir, nodemon / webpack ). Sin embargo, estoy configurando un entorno de kubernetes ( minikube ) para poder abrir rápidamente 3 o 4 servicios relacionados a la vez.
Todo funciona bien, pero actualmente no está realizando la recarga automática de código. Intenté montar el volumen, pero hay un conflicto con la forma en que docker y virtualbox manejan los archivos, de modo que el conflicto genera cambios en los archivos del host que no se reflejan en el contenedor Docker . (Ese no es el primer enlace que tengo que aparece relacionado con este problema, es solo el primero que encontré mientras lo buscaba en Google otro día)...
De todos modos, para resumir, la gente tiene problemas para realizar la recarga en vivo durante el desarrollo. Encontré el problema atascado en Internet con muy pocas soluciones. La mejor solución que diría que encontré hasta ahora es que esta persona usó tar del host para sincronizar carpetas.
Sin embargo, me gustaría una solución del contenedor. El motivo es que quiero ejecutar el script desde el contenedor para que el desarrollador no tenga que ejecutar un script en su computadora host cada vez que comienza a desarrollar en un repositorio en particular.
Sin embargo, para hacer esto, necesito ejecutar rsync desde el contenedor a la máquina host. Y estoy teniendo muchos problemas sorprendentes para descubrir cómo escribir la sintaxis para eso.
Supongamos que mi aplicación existe en mi contenedor y host respectivamente como:
/workspace/app # location in container /Users/terence/workspace/app # location in host computer ¿Cómo rsync del contenedor al host? Intenté usar 172.17.0.17 y 127.0.0.1 sin éxito. ¿No está completamente seguro de si hay una manera de hacerlo?
ejemplos que probé:
rsync -av 172.17.0.17:Users/terence/workspace/app /workspace/app rsync -av 127.0.0.1:Users/terence/workspace/app /workspace/appSi está ejecutando rsync desde el host (no dentro del contenedor), podría usar docker cp en su lugar:
por ejemplo, docker cp containerName:/workspace/app Users/terence/workspace/app
Podrías aclarar:
1. ¿Está ejecutando rsync desde el host o desde el interior del contenedor?
Si es desde el interior del contenedor, dependerá mucho de la --network a la que esté conectado el contenedor (es decir, puente o host) y también de los volúmenes montados (es decir, cuando inició el contenedor, ¿usó el indicador -v? )
Actualización : para que rsync funcione desde el contenedor, debe exponer el directorio del host al contenedor.
Cuando piense en una solución, tenga esto en cuenta: host dir como un volumen de datos
Nota : el directorio del host es, por su naturaleza, dependiente del host. Por esta razón, no puede montar un directorio de host desde Dockerfile, la instrucción VOLUME no admite pasar un directorio de host, porque las imágenes creadas deben ser portátiles. Un directorio de hosts no estaría disponible en todos los hosts potenciales.