আমি কীভাবে ডকার কম্পোজ ফাইলটিতে একটি ডলার সাইন থেকে বাঁচতে পারি?


90

আমার একটি ওয়াইএএমএল স্কেলার রয়েছে যা আমি যখন আমার docker-compose.ymlফাইলটি মূল্যায়নের চেষ্টা করি তখন নিম্নলিখিত ত্রুটিটি ছুঁড়ে ফেলা হয় :

ত্রুটি: "পরিবেশের" বিকল্পের জন্য "টাইম_সার্ভিস" বিকল্পের জন্য অবৈধ ইন্টারপোলেশন ফর্ম্যাট: "$ {সময়.নো}"

YAML:

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

আমি লিখিত হিসাবে একই স্ট্রিং আউটপুটটি কীভাবে বজায় রাখতে পারি, তবে ডকার-রচনাটিকে এটিকে ত্রুটিযুক্ত স্ট্রিং প্রবৃদ্ধি হিসাবে ব্যাখ্যা করা এড়াতে পারি?


4
এটি ওয়াইএএমএল পার্সার নয় যে সেই স্ট্রিংটির ব্যাখ্যা করছে। YAML সম্পর্কে জানে না ${}। দ্বারা ব্যাখ্যা করা হয় docker-composeএবং এটি পাইথনে লেখা হয়, তাই ট্যাগ রুবিও অনুপযুক্ত ছিল।
অ্যান্থন

আমি ভুল ধারণাটি সরিয়ে দিয়েছি যে এটি ওয়াইএএমএল সমস্যা। এটি কমপক্ষে একজন অন্য ব্যক্তিকে বিভ্রান্ত ও সময় নষ্ট করার কারণ ঘটেছে
অ্যান্থন

উত্তর:


130

আপনি docker-composeভেরিয়েবল সাবস্টেশনটি মারছেন, যা এখানে ভালভাবে নথিভুক্ত রয়েছে :

$VARIABLEএবং ${VARIABLE}বাক্য গঠন উভয়ই সমর্থিত। প্রসারিত শেল-স্টাইল বৈশিষ্ট্যগুলি যেমন, ${VARIABLE-default}এবং ${VARIABLE/foo/bar}সমর্থিত নয়।

$$আপনার কনফিগারেশনটিতে আক্ষরিক ডলার চিহ্নের প্রয়োজন হলে আপনি একটি (ডাবল ডলার সাইন) ব্যবহার করতে পারেন । এটি রচনাটিকে কোনও মানকে অন্তরঙ্গকরণ থেকেও বাধা দেয়, সুতরাং $$এটি আপনাকে পরিবেশের পরিবর্তনশীলগুলিকে উল্লেখ করতে দেয় যা আপনি রচনা দ্বারা প্রক্রিয়া করতে চান না।

docker-composeপাইথনে লেখা আছে, যেমন আপনি গিথুব-এ দেখেন , বিশেষ চরিত্রের মূল অর্থ পেতে দ্বিগুণ করার পদ্ধতিটি অনেক প্রোগ্রামে পাওয়া যায়, প্রোগ্রামিংয়ের সময়, আমাকে নিজেই এটি ব্যবহার করার দরকার ছিল ১৯৮৪ সালে।


37

এই পোস্টে% অক্ষরের জন্য পরামর্শটি অনুলিপি করে উত্তরটি খুঁজে পেয়েছি

এটিতে একটি ডাবল ডলার সাইন প্রয়োজন $$

সুতরাং আমার দরকার "$${Time.now}", যা মূল্যায়ন করে"${Time.now}"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.