2016-01-12 136 views
1

我有一个码头工人,compose.yml其中包含的东西开始在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"

是它仍然无法包含环境变量?我正在寻找最合适的解决方案。谢谢

回答

1

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

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

DOCKER_PATH=$(which docker) docker-compose up 

泊坞窗,compose.yaml(片段)

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

或者,您可以逃脱与$$ $符号,在这里看到:https://docs.docker.com/compose/compose-文件/#可变取代 – batjko