Как добавить $() в Docker Compose

У меня есть docker-compose.yml, который содержит материал для запуска jenkins-сервера на CentOS7:

jenkins:
  image: jenkins
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - $(which docker):/usr/bin/docker:ro
    - /usr/lib64/libsystemd-journal.so.0:/usr/lib/x86_64-linux-gnu/libsystemd-journal.so.0
    - /usr/lib64/libsystemd-id128.so.0:/usr/lib/x86_64-linux-gnu/libsystemd-id128.so.0
    - /usr/lib64/libdevmapper.so.1.02:/usr/lib/x86_64-linux-gnu/libdevmapper.so.1.02
    - /usr/lib64/libgcrypt.so.11:/usr/lib/x86_64-linux-gnu/libgcrypt.so.11
    - /usr/lib64/libdw.so.1:/usr/lib/x86_64-linux-gnu/libdw.so.1
  ports:
    - "8080:8080"

Но я не могу запустить компоновку, потому что постоянно получаю сообщение об ошибке $(which docker):/usr/bin/docker:ro. Как мне это исправить?

Ошибка: ERROR: Invalid interpolation format for "volumes" option in service "jenkins": "$(which docker):/usr/bin/docker:ro"

Неужели по-прежнему нельзя включать переменные среды? Я ищу наиболее правильное решение. Спасибо


person lvthillo    schedule 12.01.2016    source источник
comment
Возможный дубликат Как я могу избежать Знак доллара $ в файле компоновки докеров?   -  person kenorb    schedule 16.02.2019


Ответы (1)


$(...) — это не переменная среды, это подстановка команды.

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

DOCKER_PATH=$(which docker) docker-compose up

docker-compose.yaml (фрагмент)

- ${DOCKER_PATH}:/usr/bin/docker:ro
person dnephin    schedule 13.01.2016
comment
Кроме того, вы можете избежать знака $ с помощью $$, см. здесь: docs. docker.com/compose/compose-file/#variable-substitution - person batjko; 07.03.2017