Rumah > Operasi dan penyelenggaraan > Docker > Bagaimana untuk membina aplikasi multi-kontainer dengan Docker mengarang?

Bagaimana untuk membina aplikasi multi-kontainer dengan Docker mengarang?

James Robert Taylor
Lepaskan: 2025-03-11 16:32:19
asal
608 orang telah melayarinya

Bagaimana untuk membina aplikasi multi-kontainer dengan Docker mengarang?

Membina aplikasi multi-kontainer dengan Docker mengarang Fail ini menentukan imej untuk digunakan untuk setiap perkhidmatan, pelabuhan untuk mendedahkan, jumlah untuk dipasang, dan konfigurasi rangkaian. Mari kita gambarkan dengan contoh mudah aplikasi web dengan pangkalan data yang berasingan:

Pertama, buat docker-compose.yml fail:

 <code class="yaml"> versi: & quot; 3.9 & quot; Perkhidmatan: Web: Build: Context: ./Web Dockerfile: Dockerfile Ports: - & quot; 8080: 80 & quot; bergantung_on: - db db: imej: postgres: 13 port: - & quot; 5432: 5432 & quot; Persekitaran: - Postgres_user = myuser - Postgres_password = mypassword </code> 
Salin selepas log masuk

Ini mentakrifkan dua perkhidmatan: web dan db . Perkhidmatan web dibina dari dockerfile yang terletak di direktori ./ Web . Ia mendedahkan port 8080 pada mesin tuan rumah, pemetaan ke port 80 dalam bekas. Secara kritis, Depends_on: - db memastikan pangkalan data bermula sebelum aplikasi web. Perkhidmatan db menggunakan imej PostgreSQL yang telah dibina dan mendedahkan port 5432. Ingat untuk membuat . <code> docker-compose.yml dan laksanakan:

 <code class="bash"> docker-compose up -d ---build </code>  Bendera <code>-membina </code> membina imej perkhidmatan  jika perlu. Anda kemudian boleh berhenti dan mengeluarkan bekas menggunakan:  <pre class="brush:php;toolbar:false"> <code class="bash"> docker-compose down </code> 
Salin selepas log masuk

Ini menyediakan rangka asas. Aplikasi yang lebih kompleks mungkin melibatkan pelbagai perkhidmatan dengan kebergantungan dan konfigurasi yang rumit, yang memerlukan spesifikasi yang lebih terperinci dalam fail docker-ympose.yml . Ingat untuk menguruskan pembolehubah persekitaran dengan selamat, berpotensi menggunakan .env Fail atau Rahsia Penyelesaian pengurusan untuk persekitaran pengeluaran.

Apakah faedah utama menggunakan Docker yang dikarang untuk aplikasi multi-container? Aplikasi:
  • Penyebaran yang dipermudahkan: Satu docker-compose.yml Fail mentakrifkan keseluruhan infrastruktur aplikasi, membuat penggunaan dan replikasi langsung. Ini menghapuskan keperluan untuk menguruskan pelbagai arahan Docker secara individu. Ini mempercepat lelaran dan debugging.
  • Konsistensi persekitaran: Menggabungkan memastikan persekitaran yang konsisten merentasi sistem pembangunan dan pengeluaran yang berbeza. Ini meminimumkan percanggahan antara persekitaran, mengurangkan isu penempatan. Ini menjadikannya lebih mudah untuk diintegrasikan dengan alat orkestra seperti Kubernet di kemudian hari.
  • Fail docker-yml berfungsi sebagai sumber kebenaran tunggal. Persediaan?

Komunikasi antara konainer dan perkongsian data

Docker mengarang memudahkan komunikasi antara kontainer dan perkongsian data melalui beberapa mekanisme:

  • Bekas dalam rangkaian ini boleh berkomunikasi antara satu sama lain menggunakan nama perkhidmatan mereka. Sebagai contoh, dalam contoh kami di atas, bekas web boleh mengakses bekas db menggunakan hostname db . Ini biasanya dilakukan melalui pembolehubah persekitaran atau fail konfigurasi dalam Kod Aplikasi. Pendekatan ini sesuai untuk konfigurasi mudah. ​​
  • Volum: Jilid docker menyediakan cara yang berterusan untuk berkongsi data antara bekas. Volum boleh ditakrifkan dalam fail docker-yml dan dipasang ke dalam pelbagai bekas. Ini sesuai untuk berkongsi fail konfigurasi, pangkalan data, atau data berterusan lain. Contohnya:
versi: & quot; 3.9 & quot; Perkhidmatan: Perkhidmatan: web: # ... jumlah: - sheared_data:/app/data db: # ... jumlah: - sheared_data:/var/lib/postgresql/volum data: sheared_data:

Perkhidmatan.

  • Beratur mesej (misalnya, Rabbitmq, Kafka): Untuk komunikasi tak segerak, beratur mesej adalah penyelesaian yang mantap. Anda akan memasukkan perkhidmatan barisan mesej dalam docker-yml anda dan konfigurasikan aplikasi anda untuk berkomunikasi melalui.

Pilihan kaedah bergantung kepada keperluan khusus aplikasi anda. Untuk konfigurasi mudah, pembolehubah persekitaran atau komunikasi rangkaian langsung mungkin mencukupi. Untuk senario yang lebih kompleks yang melibatkan data yang berterusan atau komunikasi asynchronous, jilid dan beratur mesej lebih sesuai. Aplikasi yang dibina dengan Docker mengarang sering melibatkan secara sistematik memeriksa pelbagai aspek:

  • Periksa docker-compose.yml File: Pastikan konfigurasi adalah betul, termasuk pemetaan pelabuhan, kebergantungan, volum, dan pembolehubah persekitaran. Typo tunggal boleh membawa kepada masalah yang signifikan.
  • Memeriksa log kontena: Gunakan log-compose logs & lt; service_name & gt; untuk melihat log bekas individu. Log sering mendedahkan punca kesilapan.
  • Periksa status kontena: Gunakan Docker-komposisi PS untuk menyemak status bekas anda. Kenal pasti mana -mana bekas yang tidak berjalan atau telah keluar dengan kod ralat.
  • Sahkan sambungan rangkaian: Pastikan bekas boleh berkomunikasi antara satu sama lain menggunakan ping atau alat diagnostik rangkaian lain dari dalam bekas menggunakan . berfungsi dengan betul. Keletihan sumber boleh membawa kepada tingkah laku yang tidak dijangka.
  • Mulakan semula kontena: Kadang -kadang, permulaan yang mudah dapat menyelesaikan masalah sementara. Gunakan docker-compose restart & lt; service_name & gt; atau docker-compose up --build -d .
  • -d .
  • Mengasingkan masalah: Cuba menjalankan bekas secara individu untuk mengasingkan sumber masalah. Ini membantu menentukan sama ada isu ini khusus untuk satu bekas atau hasil daripada interaksi antara kolektif.
  • Dengan Docker mengarang. Ingatlah untuk berunding dengan Docker rasmi mengarang dokumentasi untuk teknik penyelesaian masalah yang lebih maju.

Atas ialah kandungan terperinci Bagaimana untuk membina aplikasi multi-kontainer dengan Docker mengarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan