【问题标题】:Not able to access value from .env file in strapi database.js file无法从strapi database.js 文件中的.env 文件访问值
【发布时间】:2021-09-09 01:08:25
【问题描述】:

我正在使用 mongodb atlas 托管数据库对一个 Strapi 应用程序进行 dockerizing。当我在 config/database.js 文件中硬编码数据库凭据时,图像工作正常。但我想从 .env 文件中获取这些凭据。根据strapi doc,我可以在不使用dotenv包的情况下在database.js文件中获取这些变量

https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/configurations.html#environment-variables

但这显示了以下错误

error 连接到 Mongo 数据库时出错。 URI没有 主机名、域名和 tld

我尝试使用 dotenv 并使用 process.env 来获取变量,但它仍然显示相同的错误。知道如何解决这个问题吗?

数据库连接代码

require('dotenv').config()
const {
  DATABASE_HOST,
  DATABASE_USERNAME,
  DATABASE_PASSWORD
} = process.env;

module.exports = ({ env }) =>
  ({
    defaultConnection: 'default',
    connections: {
      default: {
        connector: 'mongoose',
        settings: {
          host: env('DATABASE_HOST', 'open-jade-cms-0.r07jc.mongodb.net'),
          srv: env.bool('DATABASE_SRV', true),
          port: env.int('DATABASE_PORT', 27017),
          database: env('DATABASE_NAME', 'open-jade-cms-dev'),
          username: env('DATABASE_USERNAME', 'open-jade-data-admin'),
          password: env('DATABASE_PASSWORD', 'uppERH7xmydTpXI8')
        },
        options: {
          authenticationDatabase: env('AUTHENTICATION_DATABASE', null),
          ssl: env.bool('DATABASE_SSL', true),
        },
      },
    },
  });

泊坞窗文件

FROM strapi/base

COPY ./ ./

RUN npm install

RUN npm install dotenv

RUN npm run build

CMD ["npm","run", "start:develop"]

【问题讨论】:

  • 能否请您出示您的 Dockerfile 和 docker-compose.yml
  • 当然。这只是 docker 文件。这里是 FROM strapi/base COPY ./ ./ RUN npm install RUN npm install dotenv RUN npm run build CMD ["npm","run", "start:develop"]
  • 你可以在你的问题中发布 docker-compose 文件吗?
  • 完成,请检查
  • 我没有撰写文件,只是使用 docker 文件。

标签: node.js docker containers strapi dotenv


【解决方案1】:

您不需要安装dotenv 软件包。只要确保你有.env 就位。像这样的:

DATABASE_CLIENT=mongo
DATABASE_NAME=strapi
DATABASE_HOST=mongoexample
DATABASE_PORT=27017
DATABASE_USERNAME=strapi
DATABASE_PASSWORD=password
MONGO_INITDB_ROOT_USERNAME=strapi
MONGO_INITDB_ROOT_PASSWORD=password

在本地运行strapi时使用docker-compose是个好主意

version: "3"

services:
  strapiexample:
    image: strapi/strapi
    container_name: strapiexample
    restart: unless-stopped
    env_file: .env
    environment:
      DATABASE_CLIENT: ${DATABASE_CLIENT}
      DATABASE_NAME: ${DATABASE_NAME}
      DATABASE_HOST: ${DATABASE_HOST}
      DATABASE_PORT: ${DATABASE_PORT}
      DATABASE_USERNAME: ${DATABASE_USERNAME}
      DATABASE_PASSWORD: ${DATABASE_PASSWORD}
    networks:
      - strapi-app-network
    volumes:
      - ./app:/srv/app
    ports:
      - "1337:1337"

以上摘自strapi blogs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2021-09-08
    • 2021-03-16
    • 2022-01-25
    • 2020-08-09
    • 2020-07-04
    • 1970-01-01
    相关资源
    最近更新 更多