【发布时间】:2020-04-30 12:30:26
【问题描述】:
这是我关于这个特定问题的第二篇文章。我已经删除了这个问题,因为我找到了一种更好的方式来解释我到底想做什么。
本质上,我想将命令行参数传递给docker-compose up,并将它们设置为我的 Vue.js Web 应用程序中的环境变量。目标是能够更改环境变量,而无需每次都重新构建容器。
我遇到了几个问题。这是我的 docker 文件:
用于 Vue.js 应用程序的 Dockerfile。
FROM node:latest as build-stage
WORKDIR /app
# Environment variable.
ENV VUE_APP_FOO=FOO
COPY package*.json ./
RUN npm install
COPY ./ .
RUN npm run build
FROM nginx as production-stage
RUN mkdir /app
COPY --from=build-stage /app/dist /app
COPY nginx.conf /etc/nginx/nginx.conf
VUE_APP_FOO 通过 Node 的 process.env 对象存储和访问,并且似乎在构建时传入。
还有我的 docker-compose.yml:
version: '3.5'
services:
ms-sql-server:
image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu
ports:
- "1430:1433"
api:
image: # omitted (pulled from url)
restart: always
depends_on:
- ms-sql-server
environment:
DBServer: "ms-sql-server"
ports:
- "50726:80"
client:
image: # omitted(pulled from url)
restart: always
environment:
- VUE_APP_BAR="BAR"
depends_on:
- api
ports:
- "8080:80"
当我使用docker exec -it <container_name> /bin/bash SSH 进入客户端容器时,VUE_APP_BAR 变量的值是“BAR”。但该变量并未存储在我的 Vue 应用程序的 process.env 对象中。 Node 和它的环境变量似乎发生了一些奇怪的事情。这就像是忽略了容器环境。
我是否可以在我的 Vue.js 应用程序中访问 docker-compose.yml 中设置的容器级变量?此外,无论如何将这些变量作为参数传递给docker-compose up?如果您需要任何澄清/更多信息,请告诉我。
【问题讨论】:
-
什么在为您的 Vue 应用程序提供服务? Nginx?
-
是的,它是 Nginx。
标签: docker vue.js docker-compose