From 51a172fd885ee2648a26844a262fbed29bed5a03 Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Tue, 14 Feb 2023 11:18:02 +0800 Subject: [PATCH] =?UTF-8?q?neutrino-proxy-admin=E6=96=B0=E5=A2=9Edocker?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=EF=BC=8C=E6=94=AF=E6=8C=81=E9=9A=8Fserver?= =?UTF-8?q?=E7=AB=AF=E4=B8=80=E8=B5=B7=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/admin_build.sh | 2 +- .../build/webpack.docker.conf.js | 88 +++++++++++++++++++ neutrino-proxy-admin/config/docker.env.js | 5 ++ neutrino-proxy-admin/package.json | 2 + 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 neutrino-proxy-admin/build/webpack.docker.conf.js create mode 100644 neutrino-proxy-admin/config/docker.env.js diff --git a/bin/admin_build.sh b/bin/admin_build.sh index 04de6b5d..b843861a 100644 --- a/bin/admin_build.sh +++ b/bin/admin_build.sh @@ -2,7 +2,7 @@ # 中微子代理管理后台编译打包脚本,基础参数请自行修改 #环境 -env=local +env=docker nvmDir=$HOME/.nvm nodeVersion=v13.12.0 deployDir="deploy" diff --git a/neutrino-proxy-admin/build/webpack.docker.conf.js b/neutrino-proxy-admin/build/webpack.docker.conf.js new file mode 100644 index 00000000..4c8843fd --- /dev/null +++ b/neutrino-proxy-admin/build/webpack.docker.conf.js @@ -0,0 +1,88 @@ +'use strict' +const path = require('path') +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const baseWebpackConfig = require('./webpack.base.conf') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') +const portfinder = require('portfinder') + +function resolve (dir) { + return path.join(__dirname, '..', dir) +} + +const HOST = process.env.HOST +const PORT = process.env.PORT && Number(process.env.PORT) + +const devWebpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) + }, + // cheap-module-eval-source-map is faster for development + devtool: config.dev.devtool, + + // these devServer options should be customized in /config/index.js + devServer: { + clientLogLevel: 'warning', + historyApiFallback: true, + hot: true, + compress: true, + host: HOST || config.dev.host, + port: PORT || config.dev.port, + open: config.dev.autoOpenBrowser, + overlay: config.dev.errorOverlay + ? { warnings: false, errors: true } + : false, + publicPath: config.dev.assetsPublicPath, + proxy: config.dev.proxyTable, + quiet: true, // necessary for FriendlyErrorsPlugin + watchOptions: { + poll: config.dev.poll, + } + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': require('../config/docker.env') + }), + new webpack.HotModuleReplacementPlugin(), + new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. + new webpack.NoEmitOnErrorsPlugin(), + // https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: 'index.html', + template: 'index.html', + inject: true, + favicon: resolve('favicon.ico'), + title: 'vue-element-admin', + path: config.dev.assetsPublicPath + config.dev.assetsSubDirectory + }), + ] +}) + +module.exports = new Promise((resolve, reject) => { + portfinder.basePort = process.env.PORT || config.dev.port + portfinder.getPort((err, port) => { + if (err) { + reject(err) + } else { + // publish the new Port, necessary for e2e tests + process.env.PORT = port + // add port to devServer config + devWebpackConfig.devServer.port = port + + // Add FriendlyErrorsPlugin + devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ + compilationSuccessInfo: { + messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], + }, + onErrors: config.dev.notifyOnErrors + ? utils.createNotifierCallback() + : undefined + })) + + resolve(devWebpackConfig) + } + }) +}) diff --git a/neutrino-proxy-admin/config/docker.env.js b/neutrino-proxy-admin/config/docker.env.js new file mode 100644 index 00000000..33aca667 --- /dev/null +++ b/neutrino-proxy-admin/config/docker.env.js @@ -0,0 +1,5 @@ +module.exports = { + NODE_ENV: '"development"', + ENV_CONFIG: '"docker"', + BASE_API: '"/"' +} diff --git a/neutrino-proxy-admin/package.json b/neutrino-proxy-admin/package.json index 65aa382e..943c7d6b 100644 --- a/neutrino-proxy-admin/package.json +++ b/neutrino-proxy-admin/package.json @@ -8,8 +8,10 @@ "scripts": { "local": "webpack-dev-server --inline --progress --config build/webpack.local.conf.js", "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", + "docker": "webpack-dev-server --inline --progress --config build/webpack.docker.conf.js", "build:local": "cross-env NODE_ENV=dev env_config=local node build/build.js", "build:dev": "cross-env NODE_ENV=dev env_config=dev node build/build.js", + "build:docker": "cross-env NODE_ENV=dev env_config=docker node build/build.js", "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js", "build:sit": "cross-env NODE_ENV=production env_config=sit node build/build.js", "lint": "eslint --ext .js,.vue src",