Докер Mongo — Dockerfile с indexCreate

У меня следующая проблема: нужно создать образ докера mongodb с некоторыми исходными данными и конфигурацией, поэтому я начал писать Dockerfile:

Докерфайл:

FROM mongo:latest
EXPOSE 27017
ADD ./scripts /scripts
RUN mongo PBM /scripts/indexes

/скрипты/индексы:

db.events.createIndex( {'x1':1}, {expireAfterSeconds: 0})

И здесь у меня возникла первая ошибка, что я не могу подключиться к БД:

Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused

Любые идеи ?

РЕШЕНИЕ

нужно использовать ENTRYPOINT против RUN, потому что при использовании второго db не существует.


person Armatorix    schedule 30.11.2017    source источник
comment
Есть способ заставить это работать, то есть иметь образ докера с некоторыми предварительно вставленными данными, хотя он не самый красивый. Я написал ответ (для elasticsearch) здесь: stackoverflow.com/questions/35526532/ Это будет работать лучше всего, если вам нужна база данных с фиксированными данными, потому что, если вы попытаетесь использовать том после этой процедуры, он сломается.   -  person Erpheus    schedule 30.10.2018


Ответы (1)


Причина может заключаться в том, что вы открываете порт только внутри dockerfile, вам нужно использовать -p 27017:27017 при запуске образа, но не удалять EXPOSE port внутри Dockerfile,

  • EXPOSE используется для раскрытия порта и может получить доступ к другим контейнерам
  • EXPOSE и -p используются для доступа к порту в обоих хостах m других контейнерах
person sanath meti    schedule 30.11.2017
comment
где вы упомянули, что это ошибка сборки? вы четко упомянули о том, что не удалось подключиться к 127.0.0.1:27017, в (проверка сокета на наличие ошибок после опроса), причина: в конце отказа в соединении. Итак, я ответил на первую ошибку, которую вы получили - person sanath meti; 30.11.2017