簡體   English   中英

如何在環境中使用 docker-compose

[英]How to using docker-compose with environment

我有構建到圖像中的節點應用程序。 此圖像不包含 .env 文件,因為我將它添加到 .gitignore 而應用程序需要它。 如何在docker-compose上配置這個環境?

我已經閱讀了一些示例,但仍然不明白。 這個問題和我有同樣的問題,但它仍然不起作用。

docker-compose:

version: "3.7"
services:
  node:
    container_name: node-app
    image: node_app:latest
    ports:
      - 3334:3333
    environment:
      - HOST=127.0.0.1
      - PORT=3333
      - NODE_ENV=dummy
      - APP_NAME=AdonisJs
      - CACHE_VIEWS=false
      - DB_CONNECTION=mysql
      - DB_HOST=127.0.0.1
      - DB_PORT=3306
      - DB_USER=root
      - DB_PASSWORD=password
      - DB_DATABASE=database

Dockerfile:

FROM node:14

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm i -g @adonisjs/cli
RUN npm install

ENV HOST=0.0.0.0

COPY . .

EXPOSE 3333
CMD [ "node", "server.js" ]

每次我運行docker-compose up它都會以這個結束。

WARNING: The HOST variable is not set. Defaulting to a blank string.
WARNING: The PORT variable is not set. Defaulting to a blank string.
Recreating node-app_node_1 ... done
Attaching to node-app_node_1
node_1  | 
node_1  | Error: ENOENT: no such file or directory, open '/usr/src/app/.env'
node_1  | 
node_1  | 
node_1  | 1 Env.load
node_1  |   /usr/src/app/node_modules/@adonisjs/framework/src/Env/index.js:110
node_1  | 
node_1  | 2 new Env
node_1  |   /usr/src/app/node_modules/@adonisjs/framework/src/Env/index.js:42
node_1  | 
node_1  | 3 Object.closure
node_1  |   /usr/src/app/node_modules/@adonisjs/framework/providers/AppProvider.js:29
node_1  | 
node_1  | 4 Ioc._resolveBinding
node_1  |   /usr/src/app/node_modules/@adonisjs/fold/src/Ioc/index.js:231
node_1  | 
node_1  | 5 Ioc.use
node_1  |   /usr/src/app/node_modules/@adonisjs/fold/src/Ioc/index.js:731
node_1  | 
node_1  | 6 AppProvider.boot
node_1  |   /usr/src/app/node_modules/@adonisjs/framework/providers/AppProvider.js:337
node_1  | 
node_1  | 7 anonymous
node_1  |   /usr/src/app/node_modules/@adonisjs/fold/src/Registrar/index.js:147
node_1  | 
node_1  | 8 arrayMap
node_1  |   /usr/src/app/node_modules/lodash/lodash.js:653
node_1  | 
node-app_node_1 exited with code 1

我所知道的是 docker-compose 環境傳遞給調用的變量,就像我們定義的一樣獲取值,但是圖像上沒有 not.env 文件來調用變量。 我必須做什么才能使 docker-compose 可以將環境傳遞給應用程序? 任何建議將不勝感激。

ENOENT 表示節點正在尋找 /usr/src/app/.env 中的文件,但那里什么也沒有。 嘗試添加

RUN touch /usr/src/app/.env

到您的 Dockerfile 並查看是否有一個 empty.env 文件可以修復它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM