Заполнитель шаблона в определении службы создания (массив среды)

#docker #docker-compose #docker-swarm

#docker #docker-compose #docker-swarm

Вопрос:

Я прочитал здесь, что вы можете использовать заполнитель шаблона go в docker-compose.yml

Я пробовал различные способы синтаксиса, но мне так и не удалось заменить заполнитель.

 version: "3.8"

x-base: amp;base
    image: "alpine"
    command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]

services:
  foo:
    <<: *base
    environment:
      - TEST1={{.Service.ID}}
      - "TEST2={{.Service.ID}}"
      - 'TEST3={{.Service.ID}}'
      - TEST4="{{.Service.ID}}"
      - TEST5='{{.Service.ID}}'
  bar:
    <<: *base
    environment:
      TEST1: "{{.Service.ID}}"
      TEST2: '{{.Service.ID}}'
  

Когда я проверяю наличие переменных, я получаю это.

   test docker exec test_foo_1 printenv                  
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=9165fc2da385
TEST1={{.Service.ID}}
TEST2={{.Service.ID}}
TEST3={{.Service.ID}}
TEST4="{{.Service.ID}}"
TEST5='{{.Service.ID}}'
HOME=/root
  test docker exec test_bar_1 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=393430a158d1
TEST1={{.Service.ID}}
TEST2={{.Service.ID}}
HOME=/root
  

Ответ №1:

Это работает только в swarm, а не в compose.

 docker swarm init --advertise-addr myhost
docker stack deploy -c docker-compose.yml test