Команда сборки Webpack не выводит каталог сборки при запуске сборки docker

#docker #webpack

Вопрос:

Почему моя папка «/build » отсутствует в моем контейнере docker, но присутствует, когда я запускаю локальную сборку yarn?
Может ли быть проблема с зависимостью пути в верхней части webpack.prod.config.ts? Где контейнер не может определить путь, но моя машина может это сделать? Должен ли я работать с другим хост-контейнером?

Заранее спасибо за помощь!

Ошибка

ОШИБКА [4/4] КОПИРОВАТЬ —из=сборка /приложение/сборка . 0.0 с [нажмите-n-файл 4/4] КОПИРОВАТЬ —из=сборка /приложение/сборка .: не удалось вычислить ключ кэша: «/приложение/сборка» не найдено: не найдено

Файлы

Докерфайл

 # Multi-stage Docker file # 1) Build the node project with the latest version of node # 2) NGNIX to serve the production front end packed via webpack  # Stage 1: Building the application FROM node:latest AS build  WORKDIR /app  # Copy the app to the working directory on the image COPY . .  # Install node modules and build application RUN yarn install amp;amp; yarn run build  # Stage 2: Serve content using NGINX Web Server FROM nginx:latest  ENV NODE_ENV production  WORKDIR /usr/share/nginx/html # Remove default nginx static assets RUN rm -rf ./* # Copy static assets from builder stage COPY --from=build /app/build .  # Containers run nginx with global directives and daemon off ENTRYPOINT ["nginx", "-g", "daemon off;"]  

webpack.prod.config.ts

 import path from 'path' import { Configuration } from 'webpack' import HtmlWebpackPlugin from 'html-webpack-plugin' import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin' import ESLintPlugin from 'eslint-webpack-plugin' import { CleanWebpackPlugin } from 'clean-webpack-plugin' import tailwindcss from 'tailwindcss' import autoprefixer from 'autoprefixer' import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'  const config: Configuration = {  mode: 'production',  entry: './src/index.tsx',  output: {  path: path.resolve(__dirname, 'build'),  filename: '[name].[contenthash].js',  publicPath: '/',  },  module: {  rules: [  {  test: /.(ts|js)x?$/i,  exclude: /node_modules/,  use: {  loader: 'babel-loader',  options: {  presets: [  '@babel/preset-env',  '@babel/preset-react',  '@babel/preset-typescript',  ],  },  },  },  {  test: /.(sa|sc|c)ss$/i,  use: [  'style-loader',  'css-loader',  {  loader: 'sass-loader',  options: {  sourceMap: true,  sassOptions: {  // https://github.com/sass/node-sass#outputstyle  outputStyle: 'compressed',  },  },  },  {  loader: 'postcss-loader', // postcss loader needed for tailwindcss  options: {  postcssOptions: {  ident: 'postcss',  plugins: [tailwindcss, autoprefixer],  },  },  },  ],  },  ],  },  resolve: {  extensions: ['.tsx', '.ts', '.js'],  },  plugins: [  new HtmlWebpackPlugin({  template: 'public/index.html',  }),   new ForkTsCheckerWebpackPlugin({  async: false,  }),   new ESLintPlugin({  extensions: ['js', 'jsx', 'ts', 'tsx'],  }),   // The CleanWebpackPlugin plugin will clear out the build folder.  new CleanWebpackPlugin(),  ],  performance: {  hints: false,  maxEntrypointSize: 512000,  maxAssetSize: 512000,  },  optimization: {  minimize: true,  minimizer: [  // For webpack@5 you can use the `...` syntax to extend existing minimizers  '...',  new CssMinimizerPlugin(),  ],  }, };  export default config  

пакет.json

 "scripts": {  ...  "build": "webpack --config webpack/webpack.prod.config.ts",  ... }  

Ответ №1:

Вероятно, это не «лучший» ответ, но я только что добавил выходной каталог в сценарий NPM

 "scripts": {  ...  "build": "webpack --config webpack/webpack.prod.config.ts -o ./build",  ... }  

И это решило мою проблему!