【发布时间】:2019-12-26 10:52:27
【问题描述】:
我想对我的 vuejs 应用进行 docker 化,并从 docker-compose 文件中传递环境变量。
我怀疑应用程序仅在构建阶段获取环境变量,因此它没有从 docker-compose 获取环境变量。
vue 应用:
process.env.FIRST_ENV_VAR
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;"]
码头工人撰写:
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
有没有办法在构建阶段之后将环境变量传递给 Web 应用程序?
【问题讨论】:
-
您已经在运行阶段通过了 ENV,对于构建阶段,您需要使用
Build ARGs问题一定是其他问题... -
我知道如何将环境变量传递给容器,但是一旦构建了应用程序,它就无法再获取任何环境变量了
-
我找不到如何为 Vue 解决这个问题。但我找到了 Angluar。我们可以从那里得到这个想法并在 Vue 中使用:jvandemo.com/… 简要地说:他们有一个 env.js 文件,它不是构建后混淆代码的一部分(它用作资产)。所以它可以被安装在环境中的 env.js 替换。
标签: docker vue.js nginx docker-compose