#mongodb #docker #boot2docker
#mongodb #docker #boot2docker
Вопрос:
Я использую несколько Dockerfiles для настройки своей серверной инфраструктуры. Один из файлов Dockerfile, который я создаю, — это сервер MongoDB, который будет связан с запущенным приложением веб-сервера на более позднем этапе. В настоящее время у меня проблема при запуске сервера MongoDB, я получаю следующую ошибку:
"Error parsing command line: unknown option port 27017"
В моем Dockerfile у меня есть:
CMD ["--port 27017", "--dbpath /data/db", "--smallfiles"]
ENTRYPOINT ["/usr/bin/mongod"]
Когда я использую вместо приведенных выше команд следующие, все работает:
CMD /usr/bin/mongod --port 27017 --dbpath /data/db --smallfiles
Я больше предпочитаю подход CMD — Array и ENTRYPOINT, но не могу понять, почему я получаю ошибку.
Комментарии:
1. Как поклонник docker, я все же должен сказать, что есть serverfault.com это действительно то место, где должен быть размещен ваш вопрос. StackOverflow не является «корзиной дампа» для «всех вычислений», как это было когда-то. Теперь есть специальные сайты, на которых можно задать эти вопросы. StackOverflow предназначен только для «тем программирования».
Ответ №1:
При использовании синтаксиса json вам необходимо передавать каждый аргумент по отдельности. Он будет рассматривать каждый элемент как один, тогда как в синтаксисе, отличном от json, он будет разделен оболочкой и рассматриваться как два.
CMD ["--port", "27017", "--dbpath", "/data/db", "--smallfiles"]
будет работать.
В качестве альтернативы, я не знаю, поддерживает ли это mongo, но большинство программ поддерживает, вы могли бы сделать это:
CMD ["--port=27017", "--dbpath=/data/db", "--smallfiles"]
таким образом, он будет передан как один элемент, но будет интерпретирован mongo.