首页 > 解决方案 > docker中的sails.js没有拾取process.env

问题描述

我有一个 Sails 应用程序,我试图在我的 Mac 上的 Docker 中运行。

我有一个 docker-compose.yml 如下:

version: '3.4'
services:
  backend:
    build:
      context: .
      dockerfile: ./Dockerfile
    environment:
      - COMPOSE_VAR="COMPOSE VAR"
    env_file:
        - ./localdocker.env
    ports:
      - 9091:9091
    volumes:
      - .:/usr/src/app

我在 localdocker.env 中设置了环境变量。

在我的sails datastores.js 中,我有以下内容:

module.exports.datastores = {
  default: {

    adapter: 'sails-mongo',
    url: process.env.MONGO_URL
    
  },
};

我跑

docker compose up

错误信息是

backend_1  | error: Failed to lift app: Error: Consistency violation: Unexpected error creating db connection manager:
backend_1  | ```
backend_1  | Error: invalid schema, expected mongodb

但是,如果我在 datastores.js 中硬编码应用程序连接的 url。

我跑了

docker exec -it <container name> env

它列出了所有预期的环境变量,所以看起来环境变量正在设置,但 process.env.MONGO_URL 没有捡起它。

在一个简单的 Node 应用程序中,我使用 process.env.MONGO_URL 使用相同的设置对此进行了测试,它可以毫无问题地连接到数据库,所以我必须在sails.js 中遗漏一些东西

尽管此应用已使用相同的设置和设置环境变量成功部署到 Google Cloud Run。所以我想知道它是否也与我的本地设置有关。

标签: dockersails.js

解决方案


推荐阅读