我有以下场景:我$SOME_IP定义了一个env变量,并希望在nginx块中使用它.参考nginx文档,我env在nginx.conf文件中使用如下指令:
user www-data;
worker_processes 4;
pid /run/nginx.pid;
env SOME_IP;
Run Code Online (Sandbox Code Playgroud)
现在我想将变量用于a proxy_pass.我尝试过如下:
location / {
proxy_pass http://$SOME_IP:8000;
}
Run Code Online (Sandbox Code Playgroud)
但我最终得到此错误消息: nginx: [emerg] unknown "some_ip" variable
如何在Vue中访问在运行时而不是在构建期间传递给容器的环境变量?
堆栈如下:
有关stackoverflow和其他地方的建议解决方案,使用.env文件传递变量(和使用模式),但这是在构建时,并被烘焙到docker镜像中.
我想在运行时将变量传递给Vue,如下所示:
我在helloworld.vue中尝试了以下内容:
<template>
<div>{{displayURL}}
<p>Hello World</p>
</div>
</template>
<script>
export default {
data(){
return{
displayURL:""
}
},
mounted(){
console.log("check 1")
this.displayURL=process.env.VUE_APP_ENV_MyURL
console.log(process.env.VUE_APP_ENV_MyURL)
console.log("check 3")
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我在控制台日志中找回"undefined",并且在helloworld页面上没有显示任何内容.
我也尝试将值传递到vue.config文件并从那里读取它.console.log中的结果相同"未定义"
<template>
<div>{{displayURL}}
<p>Hello World</p>
</div>
</template>
<script>
const vueconfig = require('../../vue.config');
export default {
data(){
return{
displayURL:""
}
},
mounted(){
console.log("check 1")
this.displayURL=vueconfig.VUE_APP_MyURL
console.log(vueconfig.VUE_APP_MyURL)
console.log("check 3")
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
vue.config看起来像这样:
module.exports = {
VUE_APP_MyURL: process.env.VUE_APP_ENV_MyURL
}
Run Code Online (Sandbox Code Playgroud)
如果我将值硬编码到vue.config文件中的VUE_APP_MyURL,它会在helloworld页面上成功显示.
当我询问它时,VUE_APP_ENV_MyURL成功填充了正确的值:kubectl …
我有以下docker-compose文件
version: '3'
services:
node1:
build: node1
image: node1
container_name: node1
node2:
build: node2
image: node2
container_name: node2
Run Code Online (Sandbox Code Playgroud)
我可以构建两个图像,然后用一个命令启动它们
docker-compose up -d --build
但是我想在构建中使用build-args。超出组合范围的图像的原始构建脚本如下所示
#!/bin/sh
docker build \
--build-arg ADMIN_USERNNAME_1=weblogic \
--build-arg ADMIN_PASSWORD_1=weblogic1 \
--build-arg ADMIN_NAME_1=admin \
--build-arg ...
--build-arg ... \
-t test/foo .
Run Code Online (Sandbox Code Playgroud)
两个映像都将使用相同名称但值不同的build-args。另外,由于有数十个构建参数,将它们存储在组合服务特定的构建属性文件中会很方便。docker-compose是否可能?
我想对我的 vuejs 应用程序进行 dockerize 并从 docker-compose 文件传递环境变量。
我怀疑应用程序仅在构建阶段获取环境变量,因此它不会从 docker-compose 获取环境变量。
vue应用程序:
process.env.FIRST_ENV_VAR
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM alpine:3.7
RUN apk add --update nginx nodejs
RUN mkdir -p /tmp/nginx/vue-single-page-app
RUN mkdir -p /var/log/nginx
RUN mkdir -p /var/www/html
COPY nginx_config/nginx.conf /etc/nginx/nginx.conf
COPY nginx_config/default.conf /etc/nginx/conf.d/default.conf
WORKDIR /tmp/nginx/vue-single-page-app
COPY . .
RUN npm install
RUN npm run build
RUN cp -r dist/* /var/www/html
RUN chown nginx:nginx /var/www/html
CMD ["nginx", "-g", "daemon off;"]
Run Code Online (Sandbox Code Playgroud)
docker-撰写:
version: '3.6'
services:
app:
image: myRegistry/myProject:tag
restart: always
environment:
- FIRST_ENV_VAR="first environment variable"
- …Run Code Online (Sandbox Code Playgroud)