我正在嘗試構建一個將 NODE_ENV 設定為生產的反應 docker 映像,但不斷收到此錯誤:
#0 11.74 > webpack --config webpack-prod.config.ts
#0 11.74
#0 11.83 CLI for webpack must be installed.
#0 11.83 webpack-cli (https://github.com/webpack/webpack-cli)
#0 11.83
#0 11.83 We will use "npm" to install the CLI via "npm install -D webpack-cli".
#0 11.83 Do you want to install 'webpack-cli' (yes/no):
我嘗試單獨安裝 webpack-cli,但似乎無法正常作業。
我見過的所有指南似乎都說構建不需要 devDependencies。似乎將 NODE_ENV 設定為生產會開啟一些優化,所以我想添加它。沒有 NODE_ENV 構建正常運行,因為它添加了我假設的 devDeps。
我在這里做錯了什么還是我需要devDeps?
Dockerfile:
FROM node:16-alpine as build
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm install -g webpack-cli && npm run build
FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
碼頭工人撰寫:
version: '3'
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- '80'
networks:
- default
package.json 腳本:
"build": "webpack --config webpack-prod.config.ts",
"start": "webpack serve --config webpack-dev.config.ts --progress"
uj5u.com熱心網友回復:
您可能需要安裝開發依賴項來運行本地構建序列。這可以包括 Webpack、Typescript 轉譯器和其他工具,您需要將應用程式構建到靜態檔案中,但不一定要運行它。package.json "devDependencies": 是構建所需要的。
如果您的npm run build序列在生產模式下表現不同,那么您需要在從檔案中$NODE_ENV安裝軟體包后進行設定。package.json
FROM node:16-alpine as build
WORKDIR /app
COPY package.json package-lock.json ./ # don't forget package-lock.json!
RUN npm ci # including devDependencies
COPY . .
ENV NODE_ENV=production # only after `npm ci`
RUN npm run build
FROM nginx:alpine # unchanged
COPY --from=build /app/build /usr/share/nginx/html
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
由于您正在構建一個純 Web 應用程式,這就足夠了。如果它是一個服務器端應用程式,則配方會稍微復雜一些:您需要RUN npm ci 兩次,一次包括devDependencies在早期階段以構建應用程式,一次是NODE_ENV=production在您實際運行它時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/519671.html
