Jalankan skrip latar belakang di dalam wadah buruh pelabuhan

5

Di Dockerfile saya, saya menjalankan skrip:

RUN /bin/sh -c scripts/init.sh

Dalam init.sh, semua perintah diakhiri dengan & tidak dieksekusi: Saya tidak dapat menjalankan proses latar belakang. Ada yang tahu kenapa?

clemtoy
sumber
telah mencoba menggunakan path lengkap init.sh?
ebal
@ Tidak, mengapa? Path relatif ok di perintah lain init.sh. Saya akan coba besok.
clemtoy
Untuk mengatasi masalah saya, saya menggunakan docker exec -d my_command setelah membangun ...
clemtoy
Bisakah Anda jelaskan apa yang ingin Anda lakukan lebih banyak? Apakah ini proses latar belakang yang perlu Anda jalankan pada waktu pembuatan gambar atau untuk berjalan di dalam wadah? Apakah skrip init Anda keluar setelah menjalankan tugas latar belakang?
Matt

Jawaban:

0

Ide pertama saya adalah membuat layanan di dalam wadah alih-alih menjalankannya nohup atau &, jalankan sebagai layanan sistem dan Anda tidak perlu menanganinya di init.sh.

Tapi ini bukan pendekatan buruh pelabuhan "nyata". Jika Anda membutuhkan lebih dari 1 layanan untuk dijalankan, pisahkan mereka ke wadah yang berbeda (1 kontainer - 1 layanan) dan kombinasikan semuanya dengan solusi komposisi buruh pelabuhan.

Sári Csaba
sumber
0

Saya memiliki masalah serupa dan sesuatu seperti yang berikut membantu saya.

RUN nohup bash -c "scripts/init.sh &" && sleep 4

Dalam banyak kasus server yang Anda mulai belum sepenuhnya siap. Untuk memungkinkan   server sedikit lebih banyak waktu untuk bersiap-siap tambahkan perintah tidur. Seberapa besar   argumen tidur perlu bergantung pada layanan yang Anda mulai dan   Anda mungkin perlu mengubahnya.

Baca lebih lajut pada Doc ini

Yusef Mohamadi
sumber