Как динамически передать сопоставление портов в команду docker -compose up? - PullRequest
0 голосов
/ 21 января 2020

У меня есть два образа контейнера, и я создаю и запускаю docker, используя "docker -compose up -d ". Это отлично работает. Я хочу запустить тот же образ контейнера в другом порту, скажем, 8081. Можем ли мы передать сопоставление портов в качестве параметра командной строки docker -compose up -port novn c: 8081: 8080? Как динамически передать сопоставление портов в команду docker -compose up?

version: '2'
services:
  ide:
    image: myApp
    image: myImage:latest
    environment:
      - DISPLAY=novnc:0.0
    depends_on:
      - novnc
    networks:
      - x11
  novnc:
    image: myImageTwo:latest
    environment:
      - DISPLAY_WIDTH=1600
      - DISPLAY_HEIGHT=968
    ports:
      - "8080:8080"
    networks:
      - x11
networks:
  x11:

Ответы [ 4 ]

1 голос
/ 21 января 2020

Измените раздел портов на:

    ports:
      - "${MY_PORT}:8080"

, а затем просто используйте MY_PORT=8081 docker-compose up -d

1 голос
/ 21 января 2020

используйте $ {VAR} в вашем docker -compose.yml

например,

version: '2'
services:
  apache:
    image: httpd:2.4
    volumes:
      - .:/usr/local/apache2/htdocs/
    ports:
      - ${APP_PORT}:80

, затем используйте переменную окружения:

$ export APP_PORT=8080
$ docker-compose up

или встроенный версия:

$ APP_PORT=8080 docker-compose up
1 голос
/ 21 января 2020

Вы можете сделать это, используя файл .env.
Например, у вас будет что-то вроде этого:

$ cat .env
TAG=v1.5

$ cat docker-compose.yml
version: '3'
services:
  web:
    image: "webapp:${TAG}"

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

Вы можете узнать больше в официальном документе c

0 голосов
/ 21 января 2020

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

ports:
  - "8080-8081:8080"

, поэтому вам не нужно передавать в качестве параметра

...