MongoDB(Docker) 초기 데이터 설정 방법
하고 싶은 일
MongodB의 Docker 이미지에서 컨테이너를 만들 때 초기 데이터를 설정합니다.
docker hub - mongo에서 설명한 초기 데이터의 설정 방법의 시험 내용의 메모.
Initializing a fresh instance
When a container is started for the first time it will execute files with extensions .sh and .js that are found in/docker-entrypoint-initdb.d. Files will be executed in alphabetical order. .js files will be executed by mongo using the database specified by the MONGO_INITDB_DATABASE variable, if it is present, or test otherwise. You may also switch databases within the .js script.
컨디션
시나리오 1은 단일 DB의 시나리오
MONGO_INITDB_DATABASE
에 객체의 DB를 지정하고 쿼리 파일을 /docker-entrypoint-initdb.d
에 구성합니다.Dockerfile
FROM mongo:4
ENV MONGO_INITDB_ROOT_USERNAME root
ENV MONGO_INITDB_ROOT_PASSWORD password
ENV MONGO_INITDB_DATABASE app1
ENV TZ="Asia/Tokyo"
RUN echo $TZ > /etc/timezone
COPY init.js /docker-entrypoint-initdb.d/
init.jsdb.createUser({user: "foo", pwd: "foo-password", roles: [{role:"readWrite",db: "app1"}]})
DB가 2개 이상인 경우
만약
MONGO_INITDB_DATABASE
라면 DB가 지정되기 때문에 조회 파일 측면에서 유입된 DB를 전환하는 예Dockerfile
FROM mongo:4
ENV MONGO_INITDB_ROOT_USERNAME root
ENV MONGO_INITDB_ROOT_PASSWORD password
ENV TZ="Asia/Tokyo"
RUN echo $TZ > /etc/timezone
COPY init.js /docker-entrypoint-initdb.d/
init.jsdb = db.getSiblingDB("app1");
db.createUser({user: "foo", pwd: "foo-password", roles: [{role:"readWrite",db: "app1"}]})
db = db.getSiblingDB("app2");
db.createUser({user: "bar", pwd: "bar-password", roles: [{role:"readWrite",db: "app2"}]})
또는 몬고 케이스를 사용한 도안Dockerfile
FROM mongo:4
ENV MONGO_INITDB_ROOT_USERNAME root
ENV MONGO_INITDB_ROOT_PASSWORD password
ENV TZ="Asia/Tokyo"
RUN echo $TZ > /etc/timezone
COPY init.sh /docker-entrypoint-initdb.d/
init.sh#!/bin/sh
query=$(cat <<EOS
use app1\n
db.createUser({user: "foo", pwd: "foo-password", roles: [{role:"readWrite",db: "app1"}]})\n
use app2\n
db.createUser({user: "bar", pwd: "bar-password", roles: [{role:"readWrite",db: "app2"}]})\n
EOS
)
echo -e "\n" $query | mongo -u $MONGO_INITDB_ROOT_USERNAME -p$MONGO_INITDB_ROOT_PASSWORD
참조: 파일 구성.yml
tree
.
|-- docker-compose.yml
|-- mongo
| |-- Dockerfile
| `-- init.js
`-- mongo_express
`-- Dockerfile
docker-compose.ymlversion: '3'
services:
mongo:
build: ./mongo
restart: always
ports:
- 27017:27017
mongo-express:
build: ./mongo_express
restart: always
ports:
- 8081:8081
mongo_express/DockerfileFROM mongo-express
ENV ME_CONFIG_MONGODB_ADMINUSERNAME root
ENV ME_CONFIG_MONGODB_ADMINPASSWORD password
ENV TZ="Asia/Tokyo"
RUN echo $TZ > /etc/timezone
Reference
이 문제에 관하여(MongoDB(Docker) 초기 데이터 설정 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/koshilife/articles/549555997e9e16텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)