MongoDB docker-entrypoint忽略用于创建用户和数据库的自定义脚本。 我已经尝试了很多方法。这是我的配置之一。
解决方案1
docker-compose.yml(版本1)
version: '3.2'
services:
erste-mongodb:
build:
context: .
dockerfile: mongodb.dockerfile
image: erste/lts:mongodb
#environment:
# MONGO_INITDB_ROOT_USERNAME: "root"
# MONGO_INITDB_ROOT_PASSWORD: "toor"
volumes:
- ./data/mongo-data:/data/db
# - ./data/mongo-init:/docker-entrypoint.d/
ports:
- "27017:27017"
networks:
- mynet
网络: Mynet:
dockerfile
FROM mongo:latest
COPY ./data/mongo-init/mongo-init.sh /docker-entrypoint.d/
解决方案2
docker-compose.yml(版本2)
version: '3.2'
services:
erste-mongodb:
build:
context: .
dockerfile: mongodb.dockerfile
image: erste/lts:mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: "root"
MONGO_INITDB_ROOT_PASSWORD: "toor"
volumes:
- ./data/mongo-data:/data/db
- ./data/mongo-init:/docker-entrypoint.d/
ports:
- "27017:27017"
networks:
- mynet
网络: Mynet:
dockerfile
FROM mongo:latest
这是我的初始化脚本:
mongo-init.sh
#!/bin/bash
echo "Creating users..."
mongo --eval "db.createUser({user: 'revision', pwd: 'rev123',roles: [{role: 'dbOwner', db: 'ebmn_log'}]});"
mongo -u revision -p rev123 --eval "db = db.getSiblingDB('ebmn_log');
db.createCollection('journal')";
echo "Finishing with users"
有人知道如何运行初始化脚本。
谢谢。
答案 0 :(得分:0)
问题是我使用的是./data/mongo-init:/docker-entrypoint.d/
而不是./data/mongo-init:/docker-entrypoint-initdb.d/
。
我已经改变了它,它就像魅力一样。
P.S。最好使用纯js而不是sh脚本。