Estoy luchando con la ejecución de los últimos cambios. A continuación se muestran los detalles.
Dockerfile
FROM python:3.7.3 RUN mkdir -p /usr/apps COPY test.py /usr/apps RUN pip install mindsdb CMD [ "python","test.py" ]
Construir
docker build -t py37:custom .
Correr
docker run -it -v /Development/PetProjects/mindsdb:/usr/apps/ py37:custom
Pero solo muestra los cambios en el momento de la compilación.
En primer lugar, al iniciar su contenedor, no está utilizando volúmenes sino bind mounts
. Por lo tanto, monta el directorio /Development/PetProjects/mindsdb
en su máquina host en el directorio /usr/apps/
. Cada cambio realizado en los archivos de su máquina host en este directorio será visible en el contenedor y viceversa.
Si quisiera usar volúmenes, podría crear uno usando el comando docker volume create
y luego ejecutar el contenedor con este volumen: docker container run -v volume_name:path_in_container image_name
. Luego, podría detener el contenedor y ejecutarlo nuevamente al pasar este volumen para ejecutar el comando y los cambios en el directorio path_in_container
podrían almacenarse en las creaciones de contenedores.
Otra cosa es que está intentando montar /usr/apps/
en su contenedor y copió un script de python allí usando Dockerfile. Tenga en cuenta que en su ventana docker run
el contenido del comando de /Development/PetProjects/mindsdb
reemplazará el contenido de /usr/apps/
en su contenedor y si no tiene su secuencia de comandos en /Development/PetProjects/mindsdb
, la secuencia de comandos no será visible en El contenedor.
Además, su CMD
parece no funcionar debido a la relación de la ruta. Debe cambiar su CMD a CMD [ "python","/usr/apps/test.py" ]
o usar la opción WORKDIR
- WORKDIR /usr/apps/
para que su comando python pueda ejecutarse desde este directorio y el script pueda verse allí .
Puede encontrar más información sobre las diferencias entre los volúmenes y los montajes de enlace en la documentación de Docker .