Я устанавливаю контейнер mongodb, используя docker, и сохраняю данные и регистрирую тома, сопоставленные с хостом.Основная идея состоит в том, чтобы создать контейнер mongodb, сохраняющий данные.
Но проблема в том, что я хочу создать пользователя-администратора mongodb и пользователя базы данных (с меньшими разрешениями) во время запуска контейнера, и есликонтейнер перезапускается, и пользователям не нужно будет снова создавать его после сохранения данных.
Что касается создания контейнера mongodb, я нашел много ответов в stackoverflow и создал Dockerfile, docker-compose.yml и mongodb.conf.Работало нормально.
Но я не нашел четкого решения, связанного с созданием пользователей.Существует несколько кодов JavaScript, которые можно использовать для создания пользователей в mongodb во время инициализации контейнеров.Но не ясно, что происходит (или должно происходить) со сценариями после того, как пользователи были созданы при перезапуске контейнера, чтобы избежать повторного создания пользователями контейнера.
Dockerfile
FROM ubuntu:latest
RUN apt-get update && \
apt-get install -qq -y curl wget gnupg gnupg2
RUN wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc |
apt-key add -
RUN echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu
bionic/mongodb-org/4.2 multiverse" | tee
/etc/apt/sources.list.d/mongodb-org-4.2.list
RUN apt-get update && \
apt-get install -y mongodb-org && \
apt-get autoclean && \
apt-get clean
ADD mongodb.conf /etc/mongodb.conf
ENTRYPOINT ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"]
CMD ["--quiet"]
docker-compose.yml
version: '3'
services:
mongo:
build: .
container_name: mongodb
image: mongodb_img
environment:
- MONGODB_USER="${MONGODB_USER}"
- MONGODB_PASS="${MONGODB_PASS}"
- MONGODB_DB="${MONGODB_DB}"
- MONGODB_ADMIN="${MONGODB_ADMIN}"
- MONGODB_ADMIN_PASS="${MONGODB_ADMIN_PASS}"
ports:
- 27017:27017
volumes:
- /data/db/:/var/lib/mongodb/
- /data/logs/:/var/log/mongodb/
В настоящее время он запускает контейнер mongodb без пользователей и без аутентификации, сопоставляя данные и журналы, соответственно, в тома / data / db и / data / logs.
Я хочу, чтобы контейнер запускался с правами администратора, определенной базы данных, пользователя базы данных и аутентификации.Если контейнер перезапускает пользователей, и базу данных создавать не нужно, поскольку данные сохраняются.