Docker команда сборки не выполняется в COPY - PullRequest
0 голосов
/ 16 января 2020

Привет У меня есть файл docker, который не выполняется по команде COPY . Сначала он работал нормально, но затем внезапно завис во время процесса сборки. Файл Docker в основном устанавливает среду разработки и аутентифицируется с помощью GCP.

FROM ubuntu:16.04

## ENV Variables
ENV PYTHON_VERSION="3.6.5"
ENV BUCKET_NAME='detection-sandbox'
ENV DIRECTORY='/usr/local/gcloud'

# Update and Install packages
RUN apt-get update -y \
 && apt-get install -y \
 curl \
 wget \
 tar \
 xz-utils \
 bc \
 build-essential \
 cmake \
 curl \
 zlib1g-dev \
 libssl-dev \
 libsqlite3-dev \
 python3-pip \
 python3-setuptools \
 unzip \
 g++ \
 git \
 python-tk

 # Install Python 3.6.5
RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz \
    && tar -xvf Python-${PYTHON_VERSION}.tar.xz \
    && rm -rf Python-${PYTHON_VERSION}.tar.xz \
    && cd Python-${PYTHON_VERSION} \
    && ./configure \
    && make install \
    && cd / \
    && rm -rf Python-${PYTHON_VERSION}

# Install pip
RUN curl -O https://bootstrap.pypa.io/get-pip.py \
    && python3 get-pip.py \
    && rm get-pip.py

# Add SNI support to Python
RUN pip --no-cache-dir install \
        pyopenssl \
        ndg-httpsclient \
        pyasn1

## Download and Install Google Cloud SDK
RUN mkdir -p /usr/local/gcloud \
    && curl https://sdk.cloud.google.com > install.sh \
    && bash install.sh --disable-prompts --install-dir=${DIRECTORY}

# Adding the package path to directory
ENV PATH $PATH:${DIRECTORY}/google-cloud-sdk/bin

# working directory
WORKDIR /usr/src/app

COPY requirements.txt ./ \
     testproject-264512-9de8b1b35153.json ./

Сбой на этом шаге:

Step 13/21 : COPY requirements.txt ./      testproject-264512-9de8b1b35153.json ./
COPY failed: stat /var/lib/docker/tmp/docker-builder942576416/testproject-264512-9de8b1b35153.json: no such file or directory

Любые выводы в этом могут быть полезны.

1 Ответ

1 голос
/ 16 января 2020

Как у вас работает docker команда сборки?

В docker рекомендации Я читал, что docker не удастся, если вы попытаетесь построить образ из stdin using -

Попытка создать Dockerfile, использующий COPY или ADD, потерпит неудачу, если этот синтаксис используется. Следующий пример иллюстрирует это:

# create a directory to work in
mkdir example
cd example

# create an example file
touch somefile.txt

docker build -t myimage:latest -<<EOF
FROM busybox
COPY somefile.txt .
RUN cat /somefile.txt
EOF

# observe that the build fails
...
Step 2/3 : COPY somefile.txt .
COPY failed: stat /var/lib/docker/tmp/docker-builder249218248/somefile.txt: no such file or directory

Я воспроизвел проблему ... Вот мой Dockerfile:

FROM alpine:3.7

## ENV Variables
ENV PYTHON_VERSION="3.6.5"
ENV BUCKET_NAME='detection-sandbox'
ENV DIRECTORY='/usr/local/gcloud'

# working directory
WORKDIR /usr/src/app

COPY kk.txt ./ \
     kk.2.txt ./

Если я создаю образ, запустив docker build -t testImage:1 [DOCKERFILE_FOLDER], docker создает изображение и работает правильно.

Однако, если я попробую ту же команду из stdin, что и:

docker build -t test:2 - <<EOF
FROM alpine:3.7

ENV PYTHON_VERSION="3.6.5"
ENV BUCKET_NAME='detection-sandbox'
ENV DIRECTORY='/usr/local/gcloud'

WORKDIR /usr/src/app

COPY kk.txt ./      kk.2.txt ./
EOF

, я получу следующую ошибку:

Step 1/6 : FROM alpine:3.7
 ---> 6d1ef012b567
Step 2/6 : ENV PYTHON_VERSION="3.6.5"
 ---> Using cache
 ---> 734d2a106144
Step 3/6 : ENV BUCKET_NAME='detection-sandbox'
 ---> Using cache
 ---> 18fba29fffdc
Step 4/6 : ENV DIRECTORY='/usr/local/gcloud'
 ---> Using cache
 ---> d926a3b4bc85
Step 5/6 : WORKDIR /usr/src/app
 ---> Using cache
 ---> 57a1868f5f27
Step 6/6 : COPY kk.txt ./      kk.2.txt ./
COPY failed: stat /var/lib/docker/tmp/docker-builder518467298/kk.txt: no such file or directory

Похоже, что docker создает образы из /var/lib/docker/tmp/, если вы строите образ из стандартного ввода, поэтому команды ADD или COPY не работают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...