# Puxando imagem alpine do Node.js e marcando como stage de build
FROM node:alpine AS build
# Definindo um diretório para o projeto
WORKDIR /usr/app
# Criando uma label name para a stage de build
LABEL name="buid"
# Copiando arquivos essenciais do projeto local para o WORKDIR
COPY package*.json ./
COPY tsconfig*.json ./
# Instalando todas as dependências
RUN npm install
# Copiando todos os arquivos do projeto local para o WORKDIR (menos os presente em .dockerignore)
COPY . .
# Fazendo o buid do projeto na stage de build
RUN npm run build
# Iniciando outra stage com a imagem alpine do Node.js, e marcando com stage de produção
FROM node:alpine AS production
# Definindo diretório para o projeto
WORKDIR /usr/app
# Criando uma label name para a stage de produção
LABEL name="production"
# Copiando arquivos essenciais para produção, do projeto local para a stage de produção
COPY package*.json ./
# Instalando somente as dependências presente em dependencies no package.json
RUN npm install --production
# Copiando a pasta gerada com o build do projeto, da stage de build
COPY --from=build /usr/app/dist ./dist
# Definindo um comando de inicialização do projeto
ENTRYPOINT [ "npm", "run", "start:prod" ]
O que precisa ser feito?
Criar docker-compose.yml, para definir serviços do projeto
Expor a porta de comunicação do projeto (pode ser feito pelo docker-compose.yml)
O que foi feito?
Foi adicionando os seguintes arquivos ao projeto:
DockerFile:
O que precisa ser feito?