在docker中使用vite vuejs检索服务器变量

问题描述 投票:0回答:1

我的 vuejs (带有 vite)与 kubernetes 部署在 3 个不同的环境(阶段、qa 和 prod)中具有相同的 docker 镜像,在这 3 个环境中我有相同的环境变量,具有 3 个不同的值,例如:在阶段 i有 VITE_APP_URL=test1,在 qa 中我有 VITE_APP_URL=test2,在产品中我有 VITE_APP_URL=test3。在我的代码中,我有这行来检索值:

import.meta.env.VITE_APP_URL
但是当我检查变量时它什么也没有返回..我想知道是否有一种方法可以检索服务器上我前面的环境变量.

这是我的 Dockerfile(如果有帮助的话):

FROM node:20.10 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# étape de production
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html

COPY ./nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker vue.js kubernetes variables vite
1个回答
0
投票

选项1

环境变量被硬编码到

Dockerfile
中。这看起来并不理想。请参阅下面的选项 2。

FROM node:20.10 as build-stage

ENV VITE_APP_URL=test2

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .

RUN npm run build

FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html

COPY nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

选项2

拥有一组环境文件,在构建时选择适当的文件。

例如:

🗎

.env-staging

VITE_APP_URL=test1

🗎

.env-qa

VITE_APP_URL=test2

🗎

.env-prod

VITE_APP_URL=test3

修改

Dockerfile
如下:

FROM node:20.10 as build-stage

ARG ENV_FILE
ENV ENV_FILE=${ENV_FILE}

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .

RUN cp ${ENV_FILE} .env && \
    npm run build

FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html

COPY nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

现在,您可以使用以下适当的选项来指定适当的环境文件作为构建参数。

docker build --build-arg ENV_FILE=.env-staging -t vite-app .
docker build --build-arg ENV_FILE=.env-qa -t vite-app .
docker build --build-arg ENV_FILE=.env-prod -t vite-app .
© www.soinside.com 2019 - 2024. All rights reserved.