Почему сборка docker-compose начинается с самого начала - PullRequest
0 голосов
/ 24 февраля 2019

Например.

Каждый раз, когда я строю.

  • Копировать package.json
  • Установить package.json
  • Добавить текущий каталог.

Мой вопрос:

Почему он не использует из кеша.Например, он не должен устанавливать package.json с самого начала, если package.json не изменяется.

Он должен использовать кеш и обновлять только код изменений.

Обновление :

Dockerfile

FROM ubuntu:18.04
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

RUN apt-get update && apt-get upgrade -y \
    && apt-get install -y  --no-install-recommends \
    build-essential \
    ca-certificates \
    gcc \
    git \
    libpq-dev \
    make \
    python-pip \
    python2.7 \
    python2.7-dev \
    apt-transport-https \
    curl \
    g++ \
    sudo \
    wget \
    bzip2 \
    chrpath \
    libssl-dev \
    libxft-dev \
    libfreetype6 \
    libfreetype6-dev \
    libfontconfig1 \
    libfontconfig1-dev \
    libfontconfig \
    poppler-utils \
    imagemagick \
    && apt-get clean \
    && rm -rf /tmp/* /var/lib/apt/lists/* \
    && apt-get -y autoclean

RUN apt-get update && apt-get install -y  --no-install-recommends software-properties-common && add-apt-repository ppa:malteworld/ppa && apt update && apt install -y  --no-install-recommends pdftk \
    && apt-get clean \
    && rm -rf /tmp/* /var/lib/apt/lists/* \
    && apt-get -y autoclean


ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 10.6.0

# Install nvm with node and npm
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash \
    && source $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION \
    && nvm alias default $NODE_VERSION \
    && nvm use default

# Set up our PATH correctly so we don't have to long-reference npm, node, &c.
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH

# Set the work directory
RUN mkdir -p /var/www/app/jobsaf-website
RUN mkdir /data
RUN mkdir /data/db

WORKDIR /var/www/app/jobsaf-website

RUN npm install -g node-gyp @angular/cli@6.2.3 nodemon  request


# Add our package.json and install *before* adding our application files
COPY package.json ./

# RUN npm install --force
RUN npm install --force

RUN npm rebuild node-sass


# Add application files
ADD . .

EXPOSE 3000 5858 4200 35729 27017 6379 49153

.dockerignore

# See http://help.github.com/ignore-files/ for more about ignoring files.

# compiled output
/tmp
/public/__build__/
/src/*/__build__/
/__build__/**
/public/dist/
/src/*/dist/
/dist/**
/.awcache
.webpack.json
/compiled/
dll/

package-lock.json
# dependencies
/node_modules
*/node_modules
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
**.js.map
.settings/

# IDE - VSCode
.vscode/


# misc
/.sass-cache
/connect.lock
/coverage/*
/libpeerconnection.log
npm-debug.log
testem.log
/typings

# e2e
/e2e/*.js
/e2e/*.map

#System Files
.DS_Store
Thumbs.db

*.csv
*.dat
*.iml
*.log
*.out
*.pid
*.seed
*.sublime-*
*.swo
*.swp
*.tgz
*.xml
.strong-pm
coverage

npm-debug*
/admin/dist

npm
/.cache-loader/*
stats.json

!/src/assets/js/admin-header.js
!/src/assets/js/website-custom.js

webpack-cache/
web/

/src/app/**/*.map
/src/app/**/*.js

1 Ответ

0 голосов
/ 24 февраля 2019

--force должен быть удален из следующей строки, поскольку он будет игнорировать любой кэш и выполнять новую установку для ваших пакетов, что приведет к созданию нового слоя сборки Docker, начиная с шага установки.

RUN npm install --force

Аргумент -f или --force заставит npm извлекать удаленные ресурсы, даже если на диске существует локальная копия.

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