Когда Мне Следует Использовать Флаг «--Service-Ports» Docker-Compose?

  • Автор темы Dvv090480
  • Обновлено
  • 20, Oct 2024
  • #1

Ссылка на запуск Docker-compose включает флаг «--service-ports».

docker-compose up

Источник: https://docs.docker.com/compose/reference/run/

Описание мне вообще ни о чем не говорит. Порты сопоставляются с хостом на

 --service-ports       Run command with the service's ports enabled and mapped

to the host.
if I specify them in the docker-compose file. No matter if the flag is used or not.

Для чего это нужно?

#docker #docker-compose

Dvv090480


Рег
04 Dec, 2011

Тем
64

Постов
179

Баллов
509
  • 25, Oct 2024
  • #2

Согласно документации Docker:

docker-compose up
runs a one-time command against a service. [...]

Команды, которые вы используете с

docker-compose run /path/to/script.sh
start in new containers with configuration defined by that of the service, including volumes, links, and other details. However, there are two important differences.

Сначала команда прошла мимо

docker-compose run
overrides the command defined in the service configuration. [...]

Второе отличие состоит в том, что

docker-compose run bash
command does not create any of the ports specified in the service configuration. This prevents port collisions with already-open ports. If you do want the service’s ports to be created and mapped to the host, specify the --service-ports flag:

docker-compose -f <FILE> up --detach

В качестве альтернативы можно указать ручное сопоставление портов с помощью

docker-compose run
or
docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell
параметры, как и при использовании docker run:

-p

Это означает, что вы можете запускать отдельные команды для уже определенной службы или служб, используя

--publish
.

Например, предположим, что вы настроили составной файл, который определяет какой-то сервис. Чтобы запустить службу для работы в фоновом режиме, вы используете

docker-compose run --service-ports web python manage.py shell
but if you wanted to look inside the container using a terminal, you would run
docker-compose run
.

Причина игнорирования портов:

run
assumes the container is already set up, and has it's ports set up correctly. If you ran a script that did something involving ports using
run
возможно, вы не захотите, чтобы он менял порты, которые были правильно сопоставлены с вашим
docker-compose run
command. This way, the option makes it so you have to tell docker explicitly "I actually want port mappings to change".

 

Crepwremi


Рег
18 May, 2006

Тем
72

Постов
179

Баллов
549
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно