как работает команда Entrypoint - PullRequest
0 голосов
/ 27 мая 2019

Как работает команда ENTRYPOINT , приведенная в приведенном ниже файле создания докера.Я нашел файл составления докера в replica 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" ] 

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

1 Ответ

0 голосов
/ 27 мая 2019

Вы используете образ "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 определены в конце.

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