Docker:" lstat no hay tal archivo o directorio " error al construir la imagen. El archivo está ahí


Quiero implementar un simple Boilerplate de JS en Docker Cloud. Utilizo un Dockerfile que ya utilicé para una repetición y una imagen diferentes. El Dockerfile es bastante simple. Solo se basa en el nginx oficial, agrega dos archivos de configuración y luego la carpeta de salida de mi boilerplate gulp a la raíz nginx. Así que lo copié del directorio one al nuevo boilerplate ya que quiero probar este.

El error que estoy obteniendo es este (última línea)

Sending build context to Docker daemon 277.5 kB
Step 1 : FROM nginx
 ---> af4b3d7d5401
Step 2 : MAINTAINER Ole Bjarnstroem
 ---> Using cache
 ---> f57bc23d9444
Step 3 : ENV LANG en_US.UTF-8
 ---> Using cache
 ---> f6f4a76092dd
Step 4 : COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
 ---> Using cache
 ---> c4f83a39ba73
Step 5 : COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
 ---> Using cache
 ---> 6fe5a6b61d9f
Step 6 : ADD ./dist /usr/share/nginx/html
lstat dist: no such file or directory

Pero la carpeta dist es alli.

.
├── Dockerfile
├── JSCS.intellij.formatter.xml
├── README.md
├── app
├── dist
├── gulpfile.babel.js
├── jspm.conf.js
├── jspm_packages
├── karma.conf.js
├── nginx
├── node_modules
├── package.json
├── tsconfig.json
├── tslint.json
├── typings
└── typings.json

Podría ser digno de mención que la carpeta a copiar se llamaba ./public Así que me imagino que esto es algún tipo de problema de caché de Docker raro.

Mi Dockerfile:

FROM nginx

ENV LANG en_US.UTF-8

# Copy configuration files
COPY ./nginx/nginx.conf /etc/nginx/nginx.conf
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf

# Add Gulp output folder to server root
ADD ./dist /usr/share/nginx/html

# Port configuration
EXPOSE 8080

Lo que he intentado hasta ahora:

  • Eliminar imágenes colgantes y no utilizadas
  • Eliminar la imagen que fue producida por el mismo archivo docker antes de
  • Usando una etiqueta diferente

Mi orden de compilación:

docker build -t my_repo/my_app .

Gracias por su ¡Socorro!

Editar: Todas las demás carpetas funcionan. Tampoco es un problema de permisos de archivo. Parece que a Docker just no le gusta la carpeta dist. Lo cual apesta.

 32
Author: Ole Spaarmann, 2016-03-23

8 answers

Bueno, yo estúpido. Había un archivo .dockerignore con dist en la carpeta del proyecto... Caso cerrado

 76
Author: Ole Spaarmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-23 14:18:41

Tuve el mismo problema, pero no era el .dockerignore, olvidé especificar el directorio para ejecutar docker. En mi caso ese directorio era . Mi comando completo antes era

docker build - < Dockerfile

Y después fue

docker build . < Dockerfile
 11
Author: Rich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-23 15:31:16

Pongo el directorio después del comando build used-f para especificar el dockerfile

Eg:

sudo docker build . -t test:i386 -f mydockerfile

El punto después de la compilación es el directorio a partir del cual construir, en este caso presente dir.

 5
Author: Vijay47,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-16 08:23:05

También tuve el mismo problema, el problema no era mi .dockerignore sino mi .gitignore, ya que no pude eliminar dist de mi gitgnore He agregado cp comando en mi Dockerfile:

....
WORKDIR /
RUN cp -r public/dist/* www/
EXPOSE 80
 2
Author: Geisy Domiciano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-08 17:44:06

Tuve este problema, y el problema resultó ser que había insertado un comentario, por ejemplo,

COPY file1.txt dest/ # comment

Resulta que no puedes hacer eso.

 2
Author: George Dewar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-28 00:31:05

Un error relacionado en la versión 138 del SDK de Google App Engine resultó en el mismo mensaje de error. Este error se ha corregido en la versión 139 del SDK. Puede actualizar a la versión más reciente con el siguiente comando:

gcloud components upgrade
 1
Author: speedplane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-13 00:39:41

Para el siguiente error de compilación de docker,

COPY failed: stat /<**path**> :no such file or directory

Lo conseguí reiniciando el servicio docker.

sudo service docker restart
 0
Author: Vineeth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-12 07:16:47

(créditos: https://serverfault.com/a/666154/152918)

Los archivos que desea copiar deben estar dentro del directorio de imágenes de Docker. No puede hacer referencia a archivos en ningún lugar de su sistema de archivos.

 0
Author: Sridhar-Sarnobat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-09 06:53:09