Dalam bidang kontena Docker, memastikan aplikasi bermula hanya apabila kebergantungan yang diperlukan sudah sedia adalah penting. Ini amat penting untuk pangkalan data seperti MySQL, yang perlu dimulakan dan disediakan sebelum menerima sambungan.
Dalam Docker Compose, pilihan depende_on dan healthcheck menyediakan cara untuk mengawal hubungan pergantungan antara bekas. Pilihan depende_on menentukan bahawa bekas harus menunggu sehingga kebergantungan yang ditentukan sihat sebelum bermula. Pilihan pemeriksaan kesihatan, sebaliknya, mentakrifkan ujian asas untuk menentukan kesihatan bekas.
Apabila cuba mengesahkan kesediaan MySQL, pelbagai kaedah telah diterokai:
Penyelesaian yang memastikan MySQL sedia sebelum memulakan bekas lain adalah seperti berikut:
version: "2.1" services: api: build: . container_name: api ports: - "8080:8080" depends_on: db: condition: service_healthy db: container_name: db image: mysql ports: - "3306" environment: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" MYSQL_USER: "user" MYSQL_PASSWORD: "password" MYSQL_DATABASE: "database" healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] timeout: 20s retries: 10
Dalam konfigurasi ini, bekas api tidak akan bermula sehingga bekas db berada sihat, yang ditentukan oleh ujian "ping" dalam konfigurasi pemeriksaan kesihatan. Ujian "ping" mengesahkan bahawa pelayan MySQL boleh dicapai dan boleh menerima sambungan, memastikan bekas api boleh memulakan operasinya dengan selamat.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Kesediaan MySQL dalam Docker Compose Sebelum Memulakan Perkhidmatan Bergantung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!