首页 > 解决方案 > 多阶段 Docker 构建失败 - 错误:标志值无效

问题描述

我正在尝试实现多阶段 docker build 来部署DjangoWeb 应用程序。copy尝试将文件从一个 docker 阶段传输到另一个阶段时发生错误。我正在分享Dockerfile和错误回溯供您参考。

同样的Docker构建在一天前工作。不知何故,它今天不工作。我已经搜索了一些解决方法。但是,没有运气。

Dockerfile的身份:

FROM node:10 AS frontend
ARG server=local
RUN mkdir -p /front_code
WORKDIR /front_code
ADD . /front_code/
RUN cd /front_code/webapp/app \
    && npm install js-beautify@1.6.12 \
    && npm install --save moment@2.22.2 \
    && npm install --save fullcalendar@3.10.1 \
    && npm install --save pdfjs-dist@2.3.200 \
    && npm install \
    && npm install --save @babel/runtime \
    && yarn list && ls -l /front_code/webapp/app/static \
    && npm run build \
    && rm -rf node_modules \
    && cd /front_code/webapp/market-app \
    && yarn install \
    && yarn list && ls -l /front_code/webapp/market-app/static \
    && yarn build \
    && rm -rf node_modules \


FROM python:3.8-alpine AS base
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

ARG server=local
ARG ENV_BUCKET_NAME=""
ARG REMOTE_ENV_FILE_NAME=""
ARG FRONT_END_MANIFEST=""
ARG s3_bucket=""
ARG AWS_ACCESS_KEY_ID=""
ARG AWS_SECRET_ACCESS_KEY=""
ARG RDS_DB_NAME=""
ARG RDS_USERNAME=""
ARG RDS_PASSWORD=""
ENV server="$server" ENV_BUCKET_NAME="$ENV_BUCKET_NAME" REMOTE_ENV_FILE_NAME="$REMOTE_ENV_FILE_NAME" FRONT_END_MANIFEST="$FRONT_END_MANIFEST" s3_bucket="$s3_bucket" AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" RDS_DB_NAME="$RDS_DB_NAME" RDS_USERNAME="$RDS_USERNAME" RDS_PASSWORD="$RDS_PASSWORD"
RUN mkdir -p /code
WORKDIR /code
ADD requirements/updated_requirements.txt /code/
ADD . /code/

COPY --from=frontend /front_code/webapp/app/static/ /code/webapp/app/static/
COPY --from=frontend /front_code/webapp/market-app/static/ /code/webapp/market-app/static/
COPY --from=frontend /front_code/templates/webapp/index.html /code/templates/webapp/index.html
COPY --from=frontend /front_code/templates/market/market-single-page.html /code/templates/market/market-single-page.html


RUN apk update \
    && apk --no-cache add --virtual build-dependencies \
          build-base \
          zlib-dev \
          jpeg-dev \
          libc-dev \
          libffi-dev \
          musl-dev \
          mariadb-connector-c-dev \
          python3-dev \
          libxslt-dev \
          libxml2-dev \
          supervisor \
          openssh \
    && pip install -qq -r updated_requirements.txt \
    && rm -rf .cache/pip \
    && apk del build-dependencies \
    && apk add --no-cache libjpeg nginx libxml2 libxslt-dev libxml2-dev mariadb-connector-c-dev \
    && cd /code/webapp/app \
    && python format_index_html.py \
    && cd /code/ \
    && python utility/s3_upload_tiny.py \
    && cd /code/webapp/market-app \
    && python format_index_html.py \
    && python format_index_html_vendor.py \
    && cd /code \
    && python utility/s3_upload_tiny_market.py \
    && python utility/cron/setup_initial_env.py \
    && chmod +x utility/cron/cron_job.sh \
    && rm /etc/nginx/conf.d/default.conf \
    && cd /code \
    && touch /var/log/cron.log \
    && mkdir -p /etc/cron.d/ \
    && cp utility/cron/django.cron /etc/cron.d/django.cron \
    && crontab /etc/cron.d/django.cron

COPY nginx.conf /etc/nginx/
COPY django-site-nginx.conf /etc/nginx/conf.d/
COPY uwsgi.ini /etc/uwsgi/
COPY supervisord.conf /etc/supervisor/
#RUN python manage.py collectstatic --noinput && python manage.py migrate --noinput

WORKDIR /code
EXPOSE 80
CMD ["/usr/local/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

错误回溯为:

Step 23/35 : ADD . /code/
 ---> 1b964365c334
Step 24/35 : COPY --from=frontend /front_code/webapp/app/static/ /code/webapp/app/static/
invalid from flag value frontend: pull access denied for frontend, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

注意:1)我有一个免费版本的 Docker 帐户。2) 我正在使用 AWS Codepipeline 进行构建和部署。3) Docker 版本是19.03.3.

标签: djangodockervue.js

解决方案


推荐阅读