docker - 环境变量未在 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;"]
解决方案
啊哈。找到了。我在 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
推荐阅读
- powershell - 从 Powershell 读取 Machine.config 中的加密连接字符串
- python - 在python中根据某些条件做一些事情
- c++ - 如何将 int 推入向量中
> - python - 如何在连接的 keras 模型中设置可训练参数
- asp.net - 通过 Windows Power Shell 发布 ASP .NET Core 应用程序
- javascript - 了解到达路由器的基础知识
- typo3 - TYPO3,Extbase:mysqli 错误消息,命令不同步
- angular - 无法将对象推入数组
- python - 为分类器的每个折叠绘制
- python - 使用熊猫中的列条件更改特定行中的值