创建文件config.js
与您想要的配置。稍后我们将使用它来创建部署到 Kubernetes 的配置映射。将其放入其他 JavaScript 文件所在的 Vue.js 项目中。尽管我们稍后会将其排除在缩小之外,但将其放在那里很有用,以便 IDE 工具可以使用它。
const config = (() => {
return {
"VUE_APP_ENV_MyURL": "...",
};
})();
现在确保您的脚本被排除在缩小之外。为此,请创建一个包含以下内容的文件 vue.config.js 来保留我们的配置文件。
const path = require("path");
module.exports = {
publicPath: '/',
configureWebpack: {
module: {
rules: [
{
test: /config.*config\.js$/,
use: [
{
loader: 'file-loader',
options: {
name: 'config.js'
},
}
]
}
]
}
}
}
在您的index.html 中,添加一个脚本块来手动加载配置文件。请注意,配置文件不会在那里,因为我们刚刚排除了它。稍后,我们将从ConfigMap
进入我们的容器。在此示例中,我们假设将其安装到与 HTML 文档相同的目录中。
<script src="<%= BASE_URL %>config.js"></script>
更改您的代码以使用我们的运行时配置:
this.displayURL = config.VUE_APP_ENV_MyURL || process.env.VUE_APP_ENV_MyURL
在 Kubernetes 中,创建一个使用配置文件内容的配置映射。当然,您想从配置文件中读取内容。
apiVersion: v1
kind: ConfigMap
metadata:
...
data:
config.js: |
var config = (() => {
return {
"VUE_APP_ENV_MyURL": "...",
};
})();
在您的部署中引用配置映射。这会将配置映射作为文件安装到容器中。这mountPath
已经包含我们缩小的index.html。我们挂载之前引用的配置文件。
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
...
template:
...
spec:
volumes:
- name: config-volume
configMap:
name: ...
containers:
- ...
volumeMounts:
- name: config-volume
mountPath: /usr/share/nginx/html/config.js
subPath: config.js
现在您可以访问配置文件<Base URL>/config.js
您应该会看到放入 ConfigMap 条目中的确切内容。您的 HTML 文档在加载缩小的 Vue.js 代码的其余部分时加载该配置映射。瞧!