Ответ 1
Ну, глупо мне. В папке проекта был файл .dockerignore
с dist
... Закрытый случай
Я хочу развернуть простой JS Boilerplate в Docker Cloud. Я использую Dockerfile, который я уже использовал для другого Boilerplate и изображения. Файл Docker довольно прост. Он основан только на официальном nginx, добавляет два файла конфигурации, а затем выходную папку моего шаблона gulp к корню nginx. Поэтому я скопировал его из одного каталога в новый шаблон, так как хочу попробовать этот.
Ошибка, которую я получаю, это (последняя строка)
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
Но папка dist находится.
.
├── 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
Можно заметить, что скопированная папка называлась ./public
Поэтому я мог представить себе, что это какая-то странная проблема с кэшем докеров.
My 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
То, что я пробовал до сих пор:
Моя команда сборки:
docker build -t my_repo/my_app .
Спасибо за вашу помощь!
Изменить: Работает любая другая папка. Это также не проблема с правами доступа к файлам. Кажется, что Docker просто не любит папку dist. Который сосет.
Ну, глупо мне. В папке проекта был файл .dockerignore
с dist
... Закрытый случай
У меня была такая же проблема, но это не был .dockerignore
, я забыл указать каталог для запуска docker. В моем случае этот каталог был .
Моя полная команда раньше была
docker build - < Dockerfile
и после
docker build . < Docker file
Я поместил каталог после использования команды сборки -f, чтобы указать файл dockerfile
например:
sudo docker build . -t test:i386 -f mydockerfile
Точка после сборки - это каталог, из которого следует построить, в данном случае - настоящий каталог.
У меня была эта проблема, и проблема оказалась в том, что я добавил комментарий, например.
COPY file1.txt dest/ # comment
Оказывается, вы не можете этого сделать.
Связанная ошибка в SDK версии приложения Google App Engine 138 привела к тому же сообщению об ошибке. Эта ошибка была исправлена в версии 139 SDK. Вы можете перейти на новую версию с помощью следующей команды:
gcloud components upgrade
У меня также была та же проблема, проблема была не в моем .dockerignore
, а в моем .gitignore
, поскольку я не мог удалить dist из моего gitgnore. Я добавил команду cp
в свой файл Docker:
....
WORKDIR /
RUN cp -r public/dist/* www/
EXPOSE 80
При следующей ошибке сборки docker,
COPY failed: stat /<**path**> :no such file or directory
Я получил его, перезапустив службу докеров.
sudo service docker restart
(кредиты: https://serverfault.com/a/666154/152918)
Файлы, которые вы хотите скопировать, должны находиться внутри каталога изображений Docker. Вы не можете ссылаться на файлы в любой точке вашей файловой системы.