# imagem base
FROM node:22.7.0-alpine3.20
# diretorio de trabalho
WORKDIR /app
# copiar a aplicacao
COPY . .
# instalar as dependencias
RUN npm install
# execucao do comando para iniciar a aplicacao
ENTRYPOINT [ "node", "server.js" ]
Destaque para:
# copiar a aplicacao
COPY . .
# instalar as dependencias
RUN npm install
Qualquer alteração na aplicação exigirá uma nova cópia e a execução do npm install sem utilizar o cache.
Todas as definições da aplicação estão definidas no package.json
Para evitar a nova cópia e a execução do npm install faz-se necessário um ajuste no Dockerfile:
# copia os arquivos com as definicoes das dependencias
COPY package*.json .
# instalar as dependencias
RUN npm install
# copiar a aplicacao
COPY . .
Dockerfile:
# imagem base
FROM node:22.7.0-alpine3.20
# diretorio de trabalho
WORKDIR /app
# copia os arquivos com as definicoes das dependencias
COPY package*.json .
# instalar as dependencias
RUN npm install
# copiar a aplicacao
COPY . .
# execucao do comando para iniciar a aplicacao
ENTRYPOINT [ "node", "server.js" ]
Com isso, toda a alteração do código da aplicação não exigirá a cópia dos arquivos com as definições das dependências e sua instalação.
A alteração do código ocorre com mais frequência do que as dependências da aplicação.
Alterar o código da aplicação:
$ pwd
/tmp/devops-conversao-temperatura/src
$ vim server.js # inserir um comentário qualquer