Yanıtlar:
docker-compose run(2015) 'te bahsedildiği gibi
Çalıştırma tarafından iletilen komut, hizmet yapılandırmasında tanımlanan komutu geçersiz kılar .
Web hizmeti yapılandırma ile başladı Örneğin,bashdaha sonradocker-compose run web python app.pybunu geçersiz kılarpython app.py.İkinci fark,
docker-compose runkomutun hizmet yapılandırmasında belirtilen bağlantı noktalarından hiçbirini oluşturmamasıdır .
Bu, zaten açık olan bağlantı noktaları ile bağlantı noktası çarpışmalarını önler. Hizmetin bağlantı noktalarının oluşturulmasını ve ana bilgisayarla eşlenmesini istiyorsanız, --service-ports bayrağını belirtin:
$ docker-compose run --service-ports web python manage.py shell
Dolayısıyla, bu özel ihtiyaçlara sahip değilseniz (bir komutu geçersiz kılmak veya farklı bağlantı noktalarında yalnızca bir konteyner çalıştırmak), docker-compose up(bir konteyner için bile) yeterlidir.
Bağlantı noktalarının neden veya ne zaman oluşturulmasını istemediğinizi açıklamaya yardımcı olabilir misiniz? Bu nedenle veya zaten açık olan bağlantı noktalarıyla çakışabilecekleri zaman
Basitçe docker-compose run, hizmetleriniz için tek seferlik komutları çalıştırmak için yapılmıştır.
Bu, zaten bir yaptıysanız docker-compose up, tüm konteynerlerinizin belirtilen bağlantı noktalarında zaten çalıştığı anlamına gelir docker-compose.yml. Bu aşamada
bir yapmak docker-compose run(tek seferlik bir komutu yürütmek için), aynı bağlantı noktasına uyuyorsa, hemen başarısız olur. Dolayısıyla, bu bağlantı noktalarının varsayılan olarak oluşturulmaması.
Başka bir kullanım durumu ( Compose ortam değişkenleri başvurusunda ):
Bir hizmette hangi ortam değişkenlerinin mevcut olduğunu görmek için çalıştırın
docker-compose run SERVICE env.
Bu komutların en son (2019+) sürümü şu konumdadır docker/docker.github.io:
Python'u pdb hata ayıklayıcı ile kullanıyorsanız şunu belirtmek isterim:
import pdb; pdb.set_trace()
Betiğinizi kullanarak çalıştırırsanız, kabuğa düşmeyecektir:
docker-compose up
Bununla birlikte, çalıştırmayı kullanırsanız, beklendiği gibi hata ayıklayıcıya açılır:
docker-compose run
Docker docs'dan bir cevap var .
Genellikle istersiniz
docker-compose up. A'dauptanımlanan tüm hizmetleri başlatmak veya yeniden başlatmak için kullanındocker-compose.yml. Varsayılan "ekli" modda, tüm kapsayıcılardan tüm günlükleri görürsünüz. "Ayrılmış" modda (-d), Compose, kapsayıcıları başlattıktan sonra çıkar ancak kapsayıcılar arka planda çalışmaya devam eder.
docker-compose runKomut “bir defaya mahsus” veya “anlık” görevleri çalıştıran içindir. Çalıştırmak istediğiniz hizmet adını gerektirir ve yalnızca çalışan hizmetin bağlı olduğu hizmetler için kapsayıcıları başlatır.runVeri hacmi kabına veri eklemek veya kaldırmak gibi testler çalıştırmak veya bir yönetim görevi gerçekleştirmek için kullanın .runKomut gibi davranandocker run -tibu konteynere bir interaktif terminali açılır ve kap içinde işlemin çıkış durumu uyan bir çıkış durumu ile döner olmasıyla.
docker-compose runçalışan bir hizmete karşı komutları yürütmek vedocker-compose upyeni bir hizmet oluşturmak için kullanın.