Docker: agregar un archivo desde un directorio principal
En mi Dockerfile
tengo:
ADD ../../myapp.war /opt/tomcat7/webapps/
Ese archivo existe y ls ../../myapp.war
me 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?
cd
a su directorio principal en su lugar- 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.
Con Docker-Compose, puedes configurar la carpeta de contexto:
# docker-compose.yml
version: '3.3'
services:
yourservice:
build:
context: ./
dockerfile: ./docker/yourservice/Dockerfile
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.
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 .