En mi Dockerfile
tengo:
ADD ../../myapp.war /opt/tomcat7/webapps/
Ese archivo existe ya que 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?
Respuestas:
Puede compilar el Dockerfile desde el directorio principal:
fuente
-f
no parece estar en desuso por los documentos -> Especifique un Dockerfile (-f) : docs.docker.com/engine/reference/commandline/build/…Desafortunadamente, (por razones prácticas y de seguridad, supongo), si desea agregar / copiar contenido local, debe ubicarse bajo la misma ruta raíz que
Dockerfile
.De la documentación :
EDITAR: ahora hay una opción (
-f
) para establecer la ruta de su Dockerfile; puede usarse para lograr lo que desea, vea la respuesta de @Boedy a continuación.fuente
Con docker-compose, puede configurar la carpeta de contexto:
fuente
Agregar algunos fragmentos de código para admitir la respuesta aceptada.
Estructura de directorios :
Entrada del archivo Docker:
Comando utilizado para construir la imagen acoplable
fuente
install_x.sh
también?La solución para quienes usan Composer es usar un volumen que apunte a la carpeta principal:
Pero estoy bastante seguro de que se puede hacer jugando con volúmenes en Dockerfile .
fuente
Como
-f
causó otro problema, desarrollé otra solución.La
-f
bandera no resolvió mi problema porque mionbuild
imagen busca un archivo en una carpeta y tuvo que llamar así:-f foo/bar/Dockerfile foo/bar
en vez de
-f foo/bar/Dockerfile .
También tenga en cuenta que esta es la única solución para algunos casos como
-f
marcafuente