首页 > 解决方案 > 环境变量未在 dockerfile 中提取

问题描述

我有一个与 docker 一起服务的 Vue 应用程序,目前我想使用环境变量来定位特定的项目 repo。但是当我设置环境变量时,它并没有在 dockerfile 中出现,

我在设置中做错了什么?

NPM 脚本

scripts: {
   "build:project1": "vue-cli-service build src/project1/main.js",
   "deploy:project1": "cross-env PROJECT_REPO=project1 bash build_deploy.sh"
}

build_deploy.sh

#!/bin/bash

docker build -t ${PROJECT_REPO} .

Dockerfile

# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build:${PROJECT_REPO}

# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

标签: dockervue.jsnpmvuejs2

解决方案


啊哈。找到了。我在 docker 文件中缺少 ARG

# build stage
ARG PROJECT_REPO
FROM node:lts-alpine as build-stage

ARG PROJECT_REPO
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build:${PROJECT_REPO}

# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

参考文档:https ://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact


推荐阅读