Jawaban:
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 denganbash
, kemudiandocker-compose run web python app.py
menimpanyapython 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
:
Saya ingin menunjukkan bahwa jika Anda menggunakan Python dengan debugger pdb:
import pdb; pdb.set_trace()
Itu tidak akan jatuh ke shell jika Anda menjalankan skrip Anda menggunakan:
docker-compose up
Namun jika Anda menggunakan jalankan, itu akan drop down ke debugger seperti yang diharapkan:
docker-compose run
Ada jawaban dari dok buruh pelabuhan .
Biasanya, kamu mau
docker-compose up
. Gunakanup
untuk memulai atau memulai kembali semua layanan yang ditentukan dalam adocker-compose.yml
. Dalam mode "terlampir" default, Anda melihat semua log dari semua wadah. Dalam mode "terlepas" (-d
), Tulis keluar setelah memulai wadah, tetapi wadah terus berjalan di latar belakang.The
docker-compose run
perintah untuk menjalankan “satu-off” atau “adhoc” tugas. Ini memerlukan nama layanan yang ingin Anda jalankan dan hanya memulai wadah untuk layanan yang bergantung pada layanan yang berjalan. Gunakanrun
untuk menjalankan tes atau melakukan tugas administratif seperti menghapus atau menambahkan data ke wadah volume data. Therun
perintah bertindak sepertidocker run -ti
dalam hal membuka terminal interaktif untuk wadah dan mengembalikan status keluar cocok dengan status keluar dari proses dalam wadah.
docker-compose run
untuk menjalankan perintah terhadap layanan yang berjalan, dandocker-compose up
untuk menelurkan layanan baru.