Rumah >Operasi dan penyelenggaraan >Docker >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>
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>
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.
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. 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:
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. 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.
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:
docker-compose.yml
File: Pastikan konfigurasi adalah betul, termasuk pemetaan pelabuhan, kebergantungan, volum, dan pembolehubah persekitaran. Typo tunggal boleh membawa kepada masalah yang signifikan. log-compose logs & lt; service_name & gt;
untuk melihat log bekas individu. Log sering mendedahkan punca kesilapan. Docker-komposisi PS
untuk menyemak status bekas anda. Kenal pasti mana -mana bekas yang tidak berjalan atau telah keluar dengan kod ralat. ping
atau alat diagnostik rangkaian lain dari dalam bekas menggunakan docker-compose restart & lt; service_name & gt;
atau docker-compose up --build -d
. 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!