【问题标题】:How to add $(...) in Docker Compose如何在 Docker Compose 中添加 $(...)
【发布时间】:2016-01-12 10:46:06
【问题描述】:

我有一个 docker-compose.yml,其中包含在 CentOS7 上启动 jenkins-server 的内容:

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"

还是不能包含环境变量吗?我正在寻找最正确的解决方案。谢谢

【问题讨论】:

标签: jenkins centos7 docker-compose docker-volume


【解决方案1】:

$(...) 不是环境变量,它是command substituion

您需要使用环境变量来传递值。

DOCKER_PATH=$(which docker) docker-compose up

docker-compose.yaml (sn-p)

- ${DOCKER_PATH}:/usr/bin/docker:ro

【讨论】: