如何将环境变量从docker-compose传递到项目?

时间:2019-01-11 17:31:44

标签: docker vue.js docker-compose environment-variables docker-image

我将AWS ECS存储库用于Docker映像。

我的docker-compose.yml文件如下:

version: "3"
services:
  my-front-end:
    image: myFrontEndImage:myTag
    links:
      - my-back-end
    ports:
      - "8080:8080"
    logging:
      driver: 'json-file'
      options:
        max-size: "50m"
  my-back-end:
    image: myBackEndImage:myTag
    ports:
      - "3000:3000"
    logging:
      driver: 'json-file'
      options:
        max-size: "50m"

我需要的是能够将docker-compose文件中的环境变量传递到我的docker映像中。

我尝试添加环境行(在format之后)。

version: "3"
services:
  my-front-end:
    image: myFrontEndImage:myTag
    links:
      - my-back-end
    environment:
      - BACKEND_SERVER_PORT=3001
    ports:
      - "8080:8080"
    logging:
      driver: 'json-file'
      options:
        max-size: "50m"
  my-back-end:
    image: myBackEndImage:myTag
    ports:
      - "3000:3000"
    logging:
      driver: 'json-file'
      options:
        max-size: "50m"

然后在我的项目(这是一个VueJS项目)中,我尝试通过process.env.BACKEND_SERVER_PORT访问它。但是我看不到我的值,当我尝试console.log(process.env);时,我发现它只有值{NODE_ENV: "development"}

所以我的问题是,如何将env变量从docker-compose传递到我的docker镜像,以便我可以在项目中使用它?

项目中的一切工作正常,我在该项目上工作了很长时间,而docker-compose文件也工作了,只是,现在当我需要添加此环境变量时,我无法使其工作。

编辑:每个请求在注释中添加的文件很少。

.Dockerfile的{​​{1}}如下:

my-front-end

如前所述,这是一个FROM node:8.11.1 WORKDIR /app COPY package*.json ./ RUN npm i npm@latest -g && \ npm install COPY . . CMD ["npm", "start"] 应用程序,这是您可能感兴趣的VueJS的一部分:

package.json

"scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "build": "node build/build.js" }, 的{​​{1}}如下:

.Dockerfile

我的后端实际上是一个my-back-end应用程序,它正在单独的端口上侦听,并且该应用程序放置在项目根目录下的文件夹FROM node:8.11.1 WORKDIR /app/server COPY package*.json ./ RUN npm i npm@latest -g && \ npm install COPY . . CMD ["npm", "start"] 中。 这是您可能感兴趣的express.js的一部分:

server

1 个答案:

答案 0 :(得分:0)

我认为您在配置docker-compose方面所做的一切正确。在将环境变量传递给VueJS应用程序时似乎有些细微差别。

根据对this question的回答,您需要使用VUE_APP_*命名变量,以便能够从客户端获取变量