2015-09-05 7 views
6

geliştirme için docker-compose kullanıyorum. Süreç boyunca, genellikle 5 kapsayıcı (web sunucusu için 1 ve postgres, redis, mongo vb. Için 4) oluşturmam gerekir. Web sunucusu konteyneri, diğer kaplar için bağlantılar içerecek şekilde yapılandırılmıştır, kendi geliştirici ana makineden kendi ENV vars, monte edilmiş birimleri vardır.Docker-compose ile konteyner oluşturun, ancak daha sonra -it seçeneği ile/etc/bash'ı çalıştırın?

Sorun, sunucuyu çalıştırmak için web konteynerine ihtiyacım yok. İstenirse, tüm bağımlı kaplar oluşturulduktan sonra -it seçenekleriyle /etc/bash web kapsayıcısını çalıştırmam gerekiyor. , Web kap için benim dockerfile ile sona erer Thats why: Açıkçası

CMD /bin/true 

böyle konteyner alışkanlık çalıştırıyor, bu yüzden "enter" için

docker exec -it <CONTAINER ID> /bin/bash 

gibi smth kullanmak ve node app.js koşamam veya diğer bazı görevler.

Kapsayıcıyı docker-compose.yml dosyasının bir parçası olarak oluşturmanın, ancak daha sonra -it seçeneğiyle/etc/bash dosyasını çalıştırmanın herhangi bir yolu var mı?

BTW, kesinlikle elle

docker run \ 
--link postgres 
--link ... 
-e "NODE_ENV=development" \ 
-e ... \ 
... 
... 
.. 

ayrı bir web konteyner başlatılabilir, ancak bu durumda ben her şey için gidiyorum muhakemeler olarak, vb env vars, tüm bağlantıları eklemek hacimleri ihtiyaç Bir uygulama geliştirin.

+0

Kullanım durumunuz/iş akışınız hakkında daha fazla bilgi verir misiniz? Gereksiz olarak karmaşık görünüyor? – johnharris85

cevap

12

docker-compose run benziyor arkadaşın olacak. docker compose docs:

Bir servise karşı bir kerelik bir komut çalıştırır. Örneğin, aşağıdaki komut web servisini başlatır ve bash komutunu çalıştırır.

$ docker-compose run web bash

komut docker-compose run <service-name> da zaten çalışmıyorsa, gerekli tüm kaplar (hacim ve bağlantı sağlayan, örneğin olanlar), kabın <service-name> önce başlatılacaktır sağlar.

Herhangi bir bağlantı eşlemesi kullanmanız durumunda, docker-compose run --service-ports <service-name>'u kullanmayı düşünebilirsiniz. Bu seçenek olmadan docker-compose, yalnızca docker-compose up'u kullanırken bağlantı noktalarını eşler.

docker run'da olduğu gibi, onlarla bittiğinde kapları kaldırmak için --rm seçeneğini de kullanabilirsiniz. Resminiz ENTRYPOINT kullanıyorsa, entrypoint: /bin/bash ile geçersiz kılmayı düşünmelisiniz.

+0

Teşekkürler Jan, ama ihtiyacım olanı değil, ancak bir çözüm buldum. Birkaç gün içinde yayınlamaya çalışacağım. – f1nn

+0

Teşekkürler, bu benim için iyi çalışıyor. –

İlgili konular