Docker: agregar un archivo desde un directorio principal

Resuelto Anthony O. asked hace 10 años • 14 respuestas

En mi Dockerfiletengo:

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

Ese archivo existe y ls ../../myapp.warme devuelve el archivo correcto, pero cuando lo 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?

Anthony O. avatar Jul 03 '14 00:07 Anthony O.
Aceptado
  1. cda su directorio principal en su lugar
  2. cree la imagen desde el directorio principal, especificando la ruta a su Dockerfile
docker build -t <some tag> -f <dir/dir/Dockerfile> .

En este caso, el contexto de la ventana acoplable se cambiará al directorio principal y se podrá acceder a él para AGREGAR y COPIAR.

Boedy avatar Dec 15 '2015 21:12 Boedy

Con Docker-Compose, puedes configurar la carpeta de contexto:

# docker-compose.yml

version: '3.3'    
services:
  yourservice:
    build:
      context: ./
      dockerfile: ./docker/yourservice/Dockerfile
Nikita Kuznetsov avatar Jul 27 '2017 14:07 Nikita Kuznetsov

Desafortunadamente (supongo que por razones prácticas y de seguridad), si desea agregar/copiar contenido local, debe ubicarse en el mismo nivel en el árbol de directorios que el archivo Dockerfile.

De la documentación :

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

EDITAR: ahora hay una opción ( -f) para establecer la ruta de su Dockerfile; se puede utilizar para lograr lo que desea, consulte la respuesta de @Boedy.

mbarthelemy avatar Jul 02 '2014 20:07 mbarthelemy

Agregar algunos fragmentos de código para respaldar la respuesta aceptada.

Estructura de directorios :

setup/
 |__docker/DockerFile
 |__target/scripts/<myscripts.sh>
src/
 |__<my source files>

Entrada de archivo Docker:

RUN mkdir -p /home/vagrant/dockerws/chatServerInstaller/scripts/
RUN mkdir -p /home/vagrant/dockerws/chatServerInstaller/src/
WORKDIR /home/vagrant/dockerws/chatServerInstaller

#Copy all the required files from host's file system to the container file system.
COPY setup/target/scripts/install_x.sh scripts/
COPY setup/target/scripts/install_y.sh scripts/
COPY src/ src/

Comando utilizado para construir la imagen de la ventana acoplable

docker build -t test:latest -f setup/docker/Dockerfile .
Binita Bharati avatar Feb 04 '2019 04:02 Binita Bharati