tag run remove hub example docker

run - docker tag example



Docker: agregar un archivo de un directorio padre (6)

En mi Dockerfile tengo:

ADD ../../myapp.war /opt/tomcat7/webapps/

Ese archivo existe como ls ../../myapp.war me devuelve el archivo correcto, pero cuando ejecuto sudo docker build -t myapp . Tengo :

Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/ 2014/07/02 19:18:09 ../../myapp.war: no such file or directory

¿Alguien sabe por qué y cómo hacerlo correctamente?


Como -f causó otro problema, desarrollé otra solución.

  • Crea una imagen base en la carpeta principal
  • Agregó los archivos requeridos.
  • Usé esta imagen como una imagen base para el proyecto que está en una carpeta descendiente.

El -f no resuelve mi problema porque mi imagen onbuild busca un archivo en una carpeta y tuvo que llamar así:

-f foo/bar/Dockerfile foo/bar

en lugar de

-f foo/bar/Dockerfile .

También tenga en cuenta que esta es la única solución para algunos casos como -f bandera


Con docker-compose puedes establecer una carpeta de contexto:

#docker-compose.yml version: ''3.3'' services: yourservice: build: context: ./ dockerfile: ./docker/yourservice/Dockerfile


Desafortunadamente, (por razones prácticas y de seguridad, supongo), si desea agregar / copiar contenido local, debe estar ubicado en la misma ruta raíz que Dockerfile .

De la documentación :

La ruta <src> debe estar dentro del contexto de la construcción; no puede AGREGAR ../algo / algo, porque el primer paso de una compilación de acoplador es enviar el directorio de contexto (y subdirectorios) al daemon de acoplador.

EDITAR: ahora hay una opción ( -f ) para establecer la ruta de su archivo Docker; puede usarse para lograr lo que quiere, vea la respuesta de @Boedy a continuación.


La solución para quienes usan el compositor es usar un volume apunta a la carpeta principal:

#docker-composer.yml foo: build: foo volumes: - ./:/src/:ro

Pero estoy bastante seguro de que puede hacerse jugando con volúmenes en Dockerfile .


Puedes construir Dockerfile desde el directorio principal:

docker build -t <some tag> -f <dir/dir/Dockerfile> .


Sí, puedes, sin opción -f si quieres!

Con un pequeño truco. Inicie un servidor http en su carpeta raíz de destino, con la instrucción ADD puede acceder al archivo desde un directorio padre a través de este servidor http porque Docker build no autoriza <src> path must be inside the context of the build

Ver https://github.com/glegoux//tree/master/questions/24537340