【发布时间】:2021-03-18 21:21:01
【问题描述】:
如何读取mongo-init.js 中的环境变量? docker-compose.yml 能够从 .env 文件中读取,但 mongo-init.js 不能,因为 mongo-init.js 将复制到 /docker-entrypoint-initdb.d 卷(不确定我是对还是错)。这意味着mongo-init.js 将process.env.MONGODB_USERNAME 读作undefined。
是否可以在复制到/docker-entrypoint-initdb.d之前先将mongo-init.js中的env值转换为/docker-entrypoint-initdb.d
docker-compose.yml
version: '2'
services:
mongodb:
image: mongo:4.4.2
restart: always
container_name: local-mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGODB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_ROOT_PASSWORD}
ports:
- ${MONGODB_PORT}:27017
volumes:
- mongodb_database:/data/db
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js
volumes:
mongodb_data:
mongo-init.js
require('dotenv').config()
print('mongo init start --------------------');
const pms = db.getSiblingDB(process.env.MONGODB_DATABASE)
pms.createUser({
user: process.env.MONGODB_USERNAME,
pwd: process.env.MONGODB_PASSWORD,
roles: [
{
role: 'readWrite',
db: process.env.MONGODB_DATABASE,
},
],
});
print('mongo init end --------------------');
.env
MONGODB_ROOT_USERNAME=root
MONGODB_ROOT_PASSWORD=password
MONGODB_DATABASE=product
MONGODB_USERNAME=user
MONGODB_PASSWORD=password
MONGODB_PORT=27017
【问题讨论】:
标签: node.js database mongodb docker docker-compose