docker -создать нужно получить свойства по имени сервиса, особенно портам - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь получить порты от сервисов, которые я определил в compose_file.yml, так как мне нужно извлечь порты, docker генерирует меня.
нет опции, чтобы внедрить их в docker.

version: '3.3'

services:
  oracleTest:
    image: ora_image
    container_name: "test1"
    ports:
     - 15211:1521

  mysqlTest:
    image: mysql:8.0
    container_name: "test2"
    restart: always
    ports:
      - 33061:3306

я обнаружил, что могу получить порты по имени контейнера, это не то, что мне нужно
Я могу получить услуги с:

docker-compose ps --services

также могу cat сопоставленный порт с командой docker снова не то, что мне нужно

docker port mysql8.0 | cut -d':' -f 2

мне нужно что-то вроде этого псевдокода:

 docker-compose -f compose_file.yml port oracleTest

или любой другой, думая, как это ... есть идеи?

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Если вы в любом случае хотите, чтобы порты имели явный доступ, то вы можете внедрить порт в переменные окружения docker-compose.yml file v ie.

Скажем, у вас есть файл .env (по умолчанию для docker - составить для поиска), как следует

oraclePort=15211
mysqlPort=33061

, затем вы можете отредактировать docker-compose.yml, чтобы принять переменную как

version: '3.3'

services:
  oracleTest:
    image: ora_image
    container_name: "test1"
    ports:
     -$oraclePort:1521 #<-- notice the variable

  mysqlTest:
    image: mysql:8.0
    container_name: "test2"
    restart: always
    ports:
      -$mysqlPort:3306 #<-- notice the variable

надеюсь, это то, что вам нужно.

0 голосов
/ 24 марта 2020

Поскольку docker-compose.yml является обычным файлом YAML, вы можете использовать yq в качестве синтаксического анализатора оболочки YAML.

kislyuk / yq: YAML командной строки и процессор XML - Оболочка jq для документов YAML / XML

Командная строка YAML и процессор XML - Оболочка jq для документов YAML / XML https://kislyuk.github.io/yq/

установить yq и jq

pip install yq
pip install jq

Разобрать порты с docker-compose.yml

cat docker-compose.yml | yq '.services|.[].ports' 
[
  "15211:1521"
]
[
  "33061:3306"
]

Получить порты oracleTest

что я нужен примерно такой псевдокод:

docker-compose -f compose_file.yml port oracleTest

Чтобы получить порты указанной службы c, используйте:

cat docker-compose.yml | yq '.services.oracleTest.ports' 
[
  "15211:1521"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...