docker-compose: docker-compose.yml içinde çalıştırıldıktan sonra kabı otomatik olarak kaldırma seçeneği


24

docker-compose runReferans sahip olduğu belirtilmektedir --rmseçeneği

Çalıştırdıktan sonra kabı çıkarın.

Bunu run, belirttiğim bazı servisler için varsayılan bir davranış haline getirmek istiyorum docker-compose.yml.

Yani, sorular :

  1. Bir şekilde belirtilebilir docker-compose.ymlmi?
  2. Mümkünse, nasıl yapabilirim?

( INB4 "Bash takma adlarını kullan, Luke!" : Tabii ki, bunun dışında docker-compose.ymlbazı bash takma adlarını ayarlayarak bunu zorlayabilirim alias docker-compose-run='docker-compose run --rm'ama bunu nasıl docker-compose.ymlekstrüzyon yoluyla değil de tam olarak uygulayabilirim .

Yanıtlar:


10

TLDR: Hala mümkün değil 2018-11 ; kullanın docker-compose downveyadocker-compose run --rm

Bu soruya güncellenmiş bir cevap vermek istiyorum çünkü neredeyse 3 yıl sonra. Bu, bazılarını aramadan kurtarır.

Aynı soruyu yaşadım ve burada (sorunun kendisinden de dahil) bulduğum geçici çözümler şunlardır:

docker-compose down

aşağıdakileri yapar:

Kapları durdurur ve oluşturduğu kapları, ağları, hacimleri ve görüntüleri kaldırır.

Varsayılan olarak, kaldırılan tek şey şunlardır:

- Containers for services defined in the Compose file
- Networks defined in the networks section of the Compose file
- The default network, if one is used

Dış olarak tanımlanan ağlar ve birimler asla kaldırılmaz.

İçinde ilan edemeseniz de, docker-compose.ymlsizi biraz sıkıntıya sokar; özellikle hacimler ve ağlar ile.

docker-compose run --rm

--rm - Çalıştırdıktan sonra kabı çıkarın. Ayrılmış modda yoksayıldı.

Bir hizmete karşı tek seferlik 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

[...] run tarafından geçen komut servis konfigürasyonunda tanımlanan komutu geçersiz kılar .

[...] komut hizmet yapılandırmasında belirtilen bağlantı noktalarından hiçbirini oluşturmuyor . Bu, zaten açık olan portlarla port çarpışmalarını önler. Hizmetin bağlantı noktalarının oluşturulmasını ve ana bilgisayara eşlenmesini istiyorsanız , --service-ports bayrağını belirtin.

docker-compose rm -f

-f, --force Kaldırma işlemini onaylamak için sorma


8

Bu, Dockerfileya da docker-compose.ymlspec'in bir parçası değil, sadece run komutu için bir cli seçeneğidir, bu yüzden cevap hayır. İcra etmek için harici bir şeye güvenmen gerekecek.

Projeniz için bazı derleme araçlarınız varsa, bununla liman işçiliği-oluşturucu görevlerini sarmalamak en iyisidir. Örneğin, gradle projelerimiz --rm, run görevleri için bazı varsayılan seçenekleri ayarlayan docker ile ilgili görevler sunar .

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.