मैं डॉक कम्पोज़ फ़ाइल में $ डॉलर के चिन्ह से कैसे बच सकता हूँ?


97

जब मैं अपनी docker-compose.ymlफ़ाइल का मूल्यांकन करने का प्रयास करता हूं, तो मेरे पास एक YAML स्केलर होता है जो निम्न त्रुटि कर रहा है :

त्रुटि: सेवा "time_service" में "पर्यावरण" विकल्प के लिए अमान्य प्रक्षेप प्रारूप: "$ {Timenow"

YAML:

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

मैं लिखित रूप में उसी स्ट्रिंग आउटपुट को कैसे बनाए रख सकता हूं, लेकिन डॉकटर-कंपोज को दोषपूर्ण स्ट्रिंग प्रक्षेप के रूप में व्याख्या करने से बचें।


1
यह YAML पार्सर नहीं है जो उस स्ट्रिंग की व्याख्या कर रहा है। YAML के बारे में पता नहीं है ${}। इंटरप्रेटिंग द्वारा किया जाता है docker-composeऔर यह पायथन में लिखा गया है, इसलिए रूबी टैग भी अनुचित था।
एंथन नोव

मैंने गलत धारणा को हटा दिया कि यह एक YAML मुद्दा है। इसने कम से कम एक अन्य व्यक्ति को गुमराह करने और समय बर्बाद करने का
एंथन

जवाबों:


142

$$जब आपके कॉन्फ़िगरेशन को शाब्दिक डॉलर चिह्न की आवश्यकता होती है तो आप (डबल-डॉलर चिह्न) का उपयोग कर सकते हैं ।

आप docker-composeचर सबस्टेशन को मार रहे हैं , जिसे यहाँ अच्छी तरह से प्रलेखित किया गया है :

दोनों $VARIABLEऔर ${VARIABLE}वाक्यविन्यास समर्थित हैं। विस्तारित शैल-शैली की विशेषताएं, जैसे कि ${VARIABLE-default}और ${VARIABLE/foo/bar}, समर्थित नहीं हैं।

$$जब आपके कॉन्फ़िगरेशन को शाब्दिक डॉलर चिह्न की आवश्यकता होती है तो आप (डबल-डॉलर चिह्न) का उपयोग कर सकते हैं । यह कंपोज़ को एक मूल्य को प्रक्षेपित करने से भी रोकता है, इसलिए $$आपको पर्यावरण चर का उल्लेख करने की अनुमति देता है जिसे आप कंपोज़ द्वारा संसाधित नहीं करना चाहते हैं।

docker-composeपायथन में लिखा गया है, जैसा कि आप गितुब पर देखते हैं , विशेष वर्णों के मूल अर्थ को प्राप्त करने के लिए दोहरीकरण तंत्र कई कार्यक्रमों में पाया जा सकता है, मुझे इसकी आवश्यकता थी, जबकि प्रोग्रामिंग, 1984 में वापस।


38

इस पोस्ट% में पात्रों के लिए सुझाव कॉपी करके उत्तर मिला

इसके लिए दोहरे डॉलर के चिन्ह की आवश्यकता होती है $$

इसलिए मुझे जरूरत थी "$${Time.now}", जिसका मूल्यांकन करता हूं"${Time.now}"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.