Конфигурационный файл mongodb не найден на закрепленном mongodb - PullRequest
0 голосов
/ 16 июня 2019

Прежде всего, я знаю, что были бы более простые способы решения моей проблемы, но чтобы лучше понять докер, я хочу решить, как запустить dockerized mongodb.

Я сейчас пытаюсь создать свой собственный образ докера mongodb, взяв уже созданный Dockerfile и изменив его. Модификация: я хочу иметь доступ к файлу mongodb.conf, который использует сервер mongodb.

Это мой Dockerfile. Я добавил только одну строку VOLUME ["/etc"] и изменил последнюю строку (я добавил последний параметр -f). Сборка образа и запуск его в контейнере работал без этих изменений.

FROM debian:jessie-slim
RUN apt-get update && \
apt-get install -y ca-certificates && \
rm -rf /var/lib/apt/lists/*
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 0C49F3730359A14518585931BC711F9BA15703C6 && \
gpg --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg
ARG MONGO_PACKAGE=mongodb-org
ARG MONGO_REPO=repo.mongodb.org
ENV MONGO_PACKAGE=${MONGO_PACKAGE} MONGO_REPO=${MONGO_REPO}
ENV MONGO_MAJOR 3.4
ENV MONGO_VERSION 3.4.18
RUN echo "deb http://$MONGO_REPO/apt/debian jessie/${MONGO_PACKAGE%-unstable}/$MONGO_MAJOR main" | tee "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"
RUN echo "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"
RUN apt-get update
RUN apt-get install -y ${MONGO_PACKAGE}=$MONGO_VERSION
VOLUME ["/data/db"]
VOLUME ["/etc"]
WORKDIR /data
EXPOSE 27017
CMD ["mongod", "--smallfiles", "-f /etc/mongodb.conf"]

Однако с моими изменениями встроенное изображение не может запуститься. Это немедленно выходит. docker logs <container-name> дает мне

Error reading config file: No such file or directory
try 'mongod --help' for more information

Я использовал команду запуска docker run -p 37017:27017 -d -v /tmp/mongodb/data:/data/db -v /tmp/mongodb/etc:/etc mongo-image и ожидал, что файл, расположенный по адресу /tmp/mongodb/etc/mongodb.conf в моей хост-системе, будет найден тогда (да, он существует там, я поместил его там).

Что я делаю не так? Я новичок в докере, и я думаю, что перепутал объемы, может быть?

1 Ответ

0 голосов
/ 16 июня 2019

Вам не нужно указывать эти строки:

VOLUME ["/data/db"]
VOLUME ["/etc"]

VOLUME в вашем файле Docker создает отдельный каталог на вашем хосте под /var/lib/docker/volumes Для получения дополнительной информации проверьте this .

-v опции в вашей команде docker run должно быть достаточно для монтирования mongodb.conf на вашем хосте внутри контейнера.

Обновление Я внес небольшое изменение в ваш dockerfile, и он начал работать. CMD ["mongod", "--smallfiles", "-f", "/etc/mongodb.conf"]

-f и /etc/mongodb.conf должны быть разделены запятой, то есть синтаксис CMD.

Пожалуйста, попробуйте это на вашем конце и дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...