【问题标题】:Error: Config validation error: "JWT_SECRET" is required. "JWT_EXPIRATION_TIME" is required. What is this. How to avoid this错误:配置验证错误:需要“JWT_SECRET”。 “JWT_EXPIRATION_TIME”是必需的。这是什么。如何避免这种情况
【发布时间】:2020-12-27 10:12:41
【问题描述】:

我有docker-compose.ymllike 关注

version: '3'

services:
  api-server:
    build: ./api_test
    links:
      - 'db'
    ports:
      - '3000:3000'
    volumes:
      - ./api:/src
      - ./src/node_modules
    tty: true
    container_name: api-server

  db:
    build:
      context: .
      dockerfile: ./db/Dockerfile
    restart: always
    hostname: db
    environment:
      MYSQL_ROOT_PASSWORD: test
      MYSQL_USER: root
      MYSQL_PASSWORD: test
      MYSQL_DATABASE: test
    volumes:
      - './db:/config'
    ports:
      - 3306:3306
    container_name: db

buildthem 和up

当我尝试输入它的container

docker exec -it api-server sh

npm start

Error: Config validation error: "JWT_SECRET" is required. "JWT_EXPIRATION_TIME" is required.

JWT_SECRET 是什么? 以及如何避免这种情况?

如果有人有意见,请告诉我。

谢谢

【问题讨论】:

  • 您在代码中的任何地方都使用jsonwebtoken 或类似的东西吗?
  • 是的,我想我必须在.env 文件中设置 JWT_SECRET 和 JWT_EXPIRATION。但是我是新手,不知道怎么设置。

标签: javascript node.js express docker-compose configuration


【解决方案1】:

我认为你有一个 .env 文件,其中包含 'JWT_SECRET' 和 'JWT_EXPIRY' 等 env 变量,并且在某种程度上,.env 文件没有用于 docker compose。 (很可能,您在 .dockerignore 中有 .env,这确实是一个很好的做法)。所以我们需要一种将 .env 文件或 env 变量发送到 docker compose 的方法。为此,请将以下内容添加到 DOCKERFILE:

RUN echo JWT_EXPIRY=$JWT_EXPIRY \n\
JWT_SECRET=$JWT_SECRET >> ./.env

docker-compose cmd 的变化方式是

docker-compose build --build-arg JWT_EXPIRY="your expiry" --build-arg JWT_SECRET = "your secret"

我们所做的基本上是在编写一个新的 .env 文件,其中包含我们在 docker compose build 期间作为构建参数发送的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2014-08-24
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2021-08-15
    • 2015-08-07
    • 2019-10-29
    相关资源
    最近更新 更多