Sebagaimana disebutkan dalam docker-compose run
(2015)
Perintah yang diteruskan oleh run menimpa perintah yang ditentukan dalam konfigurasi layanan .
Misalnya, jika konfigurasi layanan web dimulai dengan bash
, kemudian docker-compose run web python app.py
menimpanya python app.py
.
Perbedaan kedua adalah docker-compose run
perintah tidak membuat port yang ditentukan dalam konfigurasi layanan .
Ini mencegah tabrakan port dengan port yang sudah terbuka. Jika Anda ingin port layanan dibuat dan dipetakan ke host, tentukan flag --service-ports:
$ docker-compose run --service-ports web python manage.py shell
Jadi kecuali Anda memiliki kebutuhan spesifik tersebut (mengesampingkan perintah atau menjalankan hanya satu kontainer pada port yang berbeda), docker-compose up
(bahkan untuk satu kontainer) sudah cukup.
Bisakah Anda membantu menjelaskan mengapa atau kapan Anda tidak ingin port dibuat? Itu sebabnya atau ketika mereka mungkin konflik dengan port yang sudah terbuka
Hanya karena docker-compose run
dibuat untuk menjalankan perintah satu kali untuk layanan Anda.
Itu berarti bahwa, jika Anda sudah melakukan docker-compose up
, semua wadah Anda sudah berjalan pada port yang ditentukan dari docker-compose.yml
.
Melakukan docker-compose run
pada tahap ini (untuk menjalankan perintah satu kali), jika itu menghormati port yang sama, akan segera gagal. Karenanya defaultnya adalah non-pembuatan port tersebut.
Kasus penggunaan lain (dalam referensi variabel lingkungan Tulis ):
Untuk melihat variabel lingkungan apa yang tersedia untuk layanan, jalankan docker-compose run SERVICE env
.
Versi terbaru dari perintah-perintah itu ada di docker/docker.github.io
:
docker-compose run
untuk menjalankan perintah terhadap layanan yang berjalan, dandocker-compose up
untuk menelurkan layanan baru.