Прежде всего, я знаю, что были бы более простые способы решения моей проблемы, но чтобы лучше понять докер, я хочу решить, как запустить 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 в моей хост-системе, будет найден тогда (да, он существует там, я поместил его там).
Что я делаю не так? Я новичок в докере, и я думаю, что перепутал объемы, может быть?