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

nat*_*ati 5 nginx docker vue.js 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"
      - SECOND_ENV_VAR="first environment variable"
    ports:
      - 8080:8080
Run Code Online (Sandbox Code Playgroud)

有没有办法在构建阶段后将环境变量传递给 Web 应用程序?

7_R*_*R3X 0

你可以试试这个。内部 docker的值FIRST_ENV_VAR将设置FIRST_ENV_VAR_ON_HOST为主机系统上的值。

version: '3.6'

services:

  app:
    image: myRegistry/myProject:tag
    restart: always
    environment:
      - FIRST_ENV_VAR=$FIRST_ENV_VAR_ON_HOST
      - SECOND_ENV_VAR=$SECOND_ENV_VAR_ON_HOST
    ports:
      - 8080:8080
Run Code Online (Sandbox Code Playgroud)

  • 他知道如何将环境变量传递给容器,但是一旦应用程序构建完成,它就无法再获取任何环境变量,这是正常的,因为 SPA 已经构建完成 (4认同)