Docker oluşturma dosyasında bir $ dolar işaretinden nasıl kaçabilirim?


97

Dosyamı değerlendirmeye çalıştığımda aşağıdaki hatayı veren bir YAML skalerim var docker-compose.yml:

HATA: "time_service" hizmetindeki "ortam" seçeneği için geçersiz enterpolasyon biçimi: "$ {Time.now}"

YAML:

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

Yazılanla aynı dize çıktısını nasıl koruyabilirim, ancak docker-compose'un onu hatalı dize enterpolasyonu olarak yorumlamasını önleyebilirim?


1
Bu dizeyi yorumlayan YAML ayrıştırıcısı değildir. YAML bilmiyor ${}. Yorumlama docker-composePython tarafından yapılır ve bu Python'da yazılır, bu nedenle ruby ​​etiketi de uygunsuzdu.
Anthon

Bunun bir YAML sorunu olduğuna dair yanlış varsayımı kaldırdım. En az bir kişi neden yanıltılmış ve atık zamanı edilecek
Anthon

Yanıtlar:


142

$$Yapılandırmanızın gerçek bir dolar işaretine ihtiyacı olduğunda bir (çift dolar işareti) kullanabilirsiniz.

Sen vuruyorsun docker-composeiyi belgelenmiştir değişken yerdeğiştirme, burada :

Hem $VARIABLEve ${VARIABLE}sözdizimi desteklenmektedir. Gibi Genişletilmiş kabuk tarzı özellikleri, ${VARIABLE-default}ve${VARIABLE/foo/bar} , desteklenmez.

$$Yapılandırmanızın gerçek bir dolar işaretine ihtiyacı olduğunda bir (çift dolar işareti) kullanabilirsiniz. Bu ayrıca Compose'un bir değeri enterpolasyonundan almasını da engeller, böylece a $$, Compose tarafından işlenmesini istemediğiniz ortam değişkenlerine başvurmanıza izin verir.

docker-composePython'da yazılmıştır, github'da gördüğünüz gibi , özel karakterlerin orijinal anlamını elde etmek için kullanılan ikiye katlama mekanizması birçok programda bulunabilir, bunu 1984'e kadar programlama yaparken kendim kullanmam gerekiyordu.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.