2016-01-29 15 views
7

ile birlikte bir bağımsız değişken nasıl iletirim docker-compose.yml dosyam var ve typing docker-compose up [something] numaralı terminalde de docker-compose.yml için bir bağımsız değişken iletmek istiyorum. Mümkün mü? Ben interpolasyon değişkenleri hakkında okumak ve sonra ${testval} ve docker-compose up [something] var="test" kullanılarak .yml dosyasında bir değişkeni belirtmek için çalıştı ama aşağıdaki hatayı alırsınız ettik: argümanları geçmek için herhangi bir bayrak veya komutu içermezDocker-compose up

WARNING: The testval variable is not set. Defaulting to a blank string.
ERROR: No such service: testval=test

cevap

2

docker-compose .

Compose, öncelikli olarak hizmetlerin oluşturulmasında değil, resim oluşturulmasında kullanılan bir araçtır. Bağımsız değişkenler için her bir docker dosyasında tanımlanan ARG kullanmayı deneyin.

O docker-compose bu amaç için tasarlanmış nedeniyle her benzersiz yapı senaryoyu destekleyecek mümkün olacak değil. En yaygın yapı senaryolarını gerçekten destekleyebilirsiniz.

Onun konu here hakkında daha fazla bilgi görebilirsiniz.

testvar=test docker-compose up ... 

veya

export testvar=test 
docker-compose up 
5

Sen ortam değişkenleri olarak değişkenleri geçmesi gerekiyor belirli bir konteyner liman işçisi-compose.yml çevresel değişken yapmanız izin verdiğini:

web: 
    ... 
    environment: 
    - RAILS_ENV=production 
    - VIRTUAL_HOST=www.example.com 
    - VIRTUAL_PORT=3011 

Bu değişkenler olacak bunları belirttiğiniz kapsayıcıya özel olunuz ve kapsayıcılar arasında paylaşılmayacaksınız.

Ayrıca "liman işçisi-oluşturmak yukarı" Herhangi bir argüman almaz.

2

Burada yapmak istediğim şey emin değilim ama ne gerek varsa bir geçmek:

7

dnephin answer dayanarak, bu sample repo oluşturmak için bir değişken docker-compose yukarı geçirebilirsiniz.

kullanımı basittir:

MAC/LINUX
  • TEST= docker-compose up oluşturmak ve iki app ve db kabı başlatın. Daha sonra api, 3030 numaralı bağlantı noktasında docker arka planınızda çalıştırılmalıdır. app ve db kapsayıcısını oluşturmak ve başlatmak için
  • TEST=DO docker-compose up. API, package.json dosyasının içinde npm run test dosyasını çalıştırmalıdır.
WINDOWS (PowerShell)
  • $env:TEST="";docker-compose up oluşturmak ve iki app ve db kabı başlatın. Daha sonra api, 3030 numaralı bağlantı noktasında docker arka planınızda çalıştırılmalıdır. app ve db konteynerlerini oluşturmak ve başlatmak için
  • $env:TEST="do";docker-compose up. API, package.json dosyasının içinde npm run test dosyasını çalıştırmalıdır.