Сборка Dockerfile на React pnpm Nx Application

Я пытаюсь собрать приложение Pnpm Nx React, приложение отлично работает в режиме разработки. Я установил Nx глобально в своей системе. Теперь я пытаюсь собрать Dockerfile, чтобы создать образ для своего приложения. Это содержимое файла, которое я создал

Когда я пытаюсь собрать свой образ, на шаге 7 я получаю сообщение о том, что Nx установлен глобально

Но на шаге, когда дело доходит до сборки, я получаю сообщение об ошибке, сообщающее, что nx не найден:

Кто-нибудь может мне помочь, пожалуйста.

# Étape 1 : Utiliser une image Node.js officielle
FROM node:18 AS base

# Définir le répertoire de travail dans le conteneur
WORKDIR /app

# Copier les fichiers de configuration dans le conteneur
COPY .npmrc package.json pnpm-lock.yaml ./

# Installer pnpm globalement
RUN npm install -g pnpm

# Configure the global bin directory for pnpm
RUN pnpm config set global-bin-dir /root/.local/bin

# Add the global bin directory to PATH
ENV PATH=/root/.local/bin:$PATH


# Installez `nx` si ce n'est pas déjà fait
RUN pnpm add -g nx

# Check if nx is installed globally
RUN if ! nx --version > /dev/null 2>&1; then echo "NX is not installed globally"; exit 1; else echo "NX version: $(nx --version)"; fi


# Installer les dépendances du projet avec pnpm
RUN pnpm install 
# --frozen-lockfile

# Copier le reste des fichiers du projet dans le conteneur
COPY . .

# Étape 2 : Build l'application avec NX
FROM base AS builder

# Construire l'application en utilisant NX
RUN pnpm nx build main-app --prod

# Étape 3 : Configurer l'image finale pour l'exécution
FROM nginx:alpine AS final

# Copier les fichiers de build de l'application vers Nginx
COPY --from=builder /app/dist/apps/main-app /usr/share/nginx/html

# Exposer le port 80 pour l'accès HTTP
EXPOSE 4200

# Commande par défaut pour lancer Nginx
CMD ["nginx", "-g", "daemon off;"]
#13 [base 7/9] RUN if ! command -v nx > /dev/null; then echo "NX is not installed globally"; exit 1; else echo "NX is installed globally"; fi
#13 0.359 NX is installed globally
#16 [builder 1/1] RUN pnpm nx build main-app --prod
#16 0.983 node:internal/modules/cjs/loader:1143
#16 0.983   throw err;
#16 0.983   ^
#16 0.983
#16 0.983 Error: Cannot find module '/app/node_modules/nx/bin/nx.js'
#16 0.983     at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)
#16 0.983     at Module._load (node:internal/modules/cjs/loader:981:27)
#16 0.983     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
#16 0.983     at node:internal/main/run_main_module:28:49 {
#16 0.983   code: 'MODULE_NOT_FOUND',
#16 0.983   requireStack: []
#16 0.983 }
#16 0.983
#16 0.983 Node.js v18.20.4
#16 ERROR: process "/bin/sh -c pnpm nx build main-app --prod" did not complete successfully: exit code: 1
    #13 DONE 0.4s
Ангелина
Вопрос задан20 июля 2024 г.

1 Ответ

2
Евгения
Ответ получен8 сентября 2024 г.

Ваш ответ

Загрузить файл.