相关疑难解决方法(0)

nginx:使用环境变量

我有以下场景:我$SOME_IP定义了一个env变量,并希望在nginx块中使用它.参考nginx文档,envnginx.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

shell proxy nginx environment-variables docker

20
推荐指数
4
解决办法
5万
查看次数

在运行时将环境变量传递到Vue App

如何在Vue中访问在运行时而不是在构建期间传递给容器的环境变量?

堆栈如下:

  • VueCLI 3.0.5
  • 搬运工人
  • Kubernetes

有关stackoverflow和其他地方的建议解决方案,使用.env文件传递变量(和使用模式),但这是在构建时,并被烘焙到docker镜像中.

我想在运行时将变量传递给Vue,如下所示:

  • 创建Kubernetes ConfigMap(我明白了)
  • 运行部署yaml文件时,将ConfigMap值传递给K8s pod env变量(我明白了)
  • 从上面创建的env变量中读取,例如.VUE_APP_MyURL并在我的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 vue.js kubernetes

19
推荐指数
4
解决办法
3586
查看次数

如何在docker-compose中定义build-args?

我有以下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是否可能?

containers docker docker-compose

14
推荐指数
4
解决办法
1万
查看次数

使用 nginx 将环境变量从 docker-compose 传递到 vue 应用程序

我想对我的 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)

nginx docker vue.js docker-compose

5
推荐指数
1
解决办法
8210
查看次数