Как здесь работает команда Entrypoint

Как работает команда ENTRYPOINT, показано в приведенном ниже файле компоновки докера. Я нашел файл docker Compose в реплике Set mongo docker-compose. «usr/bin/mongod» — это первая команда, указанная в ENTRYPOINT, мой вопрос в том, запустит ли usr/bin/mongod локальный mongo и запустит его с помощью контейнера докеров, или он вытащит образ mongo из репозитория и запустит его как контейнер, если да, то почему мы используем «usr/bin/mongod».

version: "3"
services:
  mongo-1:
    hostname: mongo-1
    container_name: mongo-1
    image: mongo:4.0
    ports:
      - "127.0.0.1:28000:28000"
    volumes:
      - ./mongo-1/data:/data/db
    restart: always
    entrypoint: [ "/usr/bin/mongod", "--port", "28000", "--bind_ip_all", "--replSet", "rs1" ] 

используя этот файл компоновки, я могу подключить mongoDB, работающую через порт 28000, с хост-машины, но когда я заменяю ENTRYPOINT на CMD в файле компоновки, я не могу подключить mongoDB с хост-машины.

Возможный дубликат В чем разница между CMD и ENTRYPOINT в Dockerfile?

jannis 27.05.2019 10:47
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
1
449
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете образ «mongo: 4.0», который имеет свою собственную ENTRYPOINT и CMD. Когда вы повторно объявляете любой из них в своем docker-compose.yml, вы перезаписываете исходные.

ENTRYPOINT — это основная команда, а CMD — это только параметры, отправляемые основной команде. По этой причине он работает для вас, когда вы определяете ENTRYPOINT с помощью действительной команды. Если вы измените его на CMD, то при запуске будет исходная ENTRYPOINT ("docker-entrypoint.sh") и новая команда.

Ваша точка входа использует двоичный файл из вашего контейнера, основанный на указанном изображении.

Для справки вы можете посмотреть Dockerfile официального образа: https://github.com/docker-library/mongo/blob/40056ae591c1caca88ffbec2a426e4da07e02d57/4.0/Dockerfile

ENTRYPOINT и CMD определяются в конце.

Другие вопросы по теме