Vue.js 在VueJS应用程序中使用docker-compose.yml文件中的环境变量

Vue.js 在VueJS应用程序中使用docker-compose.yml文件中的环境变量,vue.js,docker-compose,environment-variables,devops,Vue.js,Docker Compose,Environment Variables,Devops,请告诉我如何从docker compose.yml文件将环境变量传递给VUE应用程序。出于某种原因,在.gitlab ci.yml中执行纱线构建命令后,应用程序只会看到写入“env.production”文件中的环境变量 我的docker compose.yml version: "3.7" services: develop_dashboard_frontend: image: some_image:latest container_nam

请告诉我如何从
docker compose.yml
文件将环境变量传递给VUE应用程序。出于某种原因,在
.gitlab ci.yml
中执行
纱线构建
命令后,应用程序只会看到写入
“env.production”
文件中的环境变量

我的
docker compose.yml

version: "3.7"
services:
  develop_dashboard_frontend:
  image: some_image:latest           
  container_name: develop_dashboard_frontend
  environment:
    VUE_APP_API_URL: "some_api_URL"
  ports:
    - "127.0.0.1:8016:80"
  restart: always

有什么想法吗?

您需要在每个要指定的环境变量之前加上破折号(
-
),就像您在示例中使用
端口时那样。
参考:

您还需要区分构建时和运行时环境变量。 您可以为构建提供环境变量,但可能无法将其保存到运行时。这实际上取决于您的构建(我不熟悉
纱线构建
)。 但是,我建议为运行时提供env变量

只要在
yaml
中定义它们就可以了


使用
$docker stack deploy
docker compose up
应该可以工作。

vue cli/webpack将在生成时打包所有内容。因此,您必须在生成映像时传递该env变量,而不是在运行映像时。@user-28您的意思是在文件
.gitlab ci.yml
中吗?在生成阶段是。示例@user-28在本例中,我无法将环境分为dev和prod。您可以为dev和prod创建单独的作业。请参阅,我添加了一个破折号(
-
),但它不起作用,然后我尝试编写
-NODE\u ENV=“development”
,但它也不起作用
$ cat docker-compose.yml
version: '3'
services:
  api:
    image: 'some_image:tag'
    environment:
     - VARIABLE_NAME=variable_value