FROM node:22-alpine # ========================================== # DEVSECOPS: HARDENING DA IMAGEM BASE # ========================================== # Agrupamos os comandos RUN num só para otimizar as camadas da imagem (Regra do SonarQube) RUN apk update && apk upgrade --no-cache && \ npm install -g npm@latest && \ addgroup -S appgroup && adduser -S appuser -G appgroup # Define o diretório de trabalho WORKDIR /usr/src/app # Ajusta as permissões da pasta para o novo utilizador RUN chown -R appuser:appgroup /usr/src/app # Copia os ficheiros e instala dependências COPY package*.json ./ RUN npm install --omit=dev # Copia o código fonte COPY backend/ ./backend/ COPY frontend/ ./frontend/ # Altera a propriedade dos ficheiros copiados para o utilizador RUN chown -R appuser:appgroup /usr/src/app # Muda para o utilizador sem privilégios USER appuser EXPOSE 3000 CMD ["node", "backend/server.js"]