도커 작성 파일에서 $ 달러 기호를 어떻게 이스케이프 할 수 있습니까?


90

docker-compose.yml파일 을 평가하려고 할 때 다음 오류를 발생시키는 YAML 스칼라가 있습니다.

오류 : "time_service"서비스의 "environment"옵션에 대한 잘못된 보간 형식 : "$ {Time.now}"

YAML :

---
version: '2'
services:
  time_service:
    build: "."
    environment:
      TIME: "${Time.now}"

작성된 것과 동일한 문자열 출력을 유지하지만 docker-compose가 잘못된 문자열 보간으로 해석하지 않도록하려면 어떻게해야합니까?


1
해당 문자열을 해석하는 것은 YAML 파서가 아닙니다. YAML은 ${}. 해석은에 의해 이루어지며 docker-compose파이썬으로 작성되었으므로 태그 루비도 부적절했습니다.
Anthon 2011

이것이 YAML 문제라는 잘못된 가정을 제거했습니다. 그것은 적어도 하나의 다른 사람이 발생하는 오해와 시간을 낭비 할 수
안톤

답변:


130

여기에docker-compose 잘 문서화되어 있는 변수 대체를 치고 있습니다 .

$VARIABLE${VARIABLE}구문이 모두 지원됩니다. ${VARIABLE-default}및과 같은 확장 된 셸 스타일 기능 ${VARIABLE/foo/bar}은 지원되지 않습니다.

당신은 사용할 수있는 $$구성이 리터럴 달러 기호를 필요로 할 때 (이중 달러 기호). 이것은 또한 Compose가 값을 보간하는 것을 방지하므로를 사용하면 Compose에서 $$처리하지 않으려는 환경 변수를 참조 할 수 있습니다.

docker-compose은 Python으로 작성되었습니다. github 에서 볼 수 있듯이 특수 문자의 원래 의미를 얻기위한 두 배의 메커니즘은 많은 프로그램에서 찾을 수 있습니다. 1984 년으로 거슬러 올라가는 프로그래밍 중에 직접 사용해야했습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.