Docker-Compose: Memastikan Kesediaan Sambungan MySQL sebelum Perkhidmatan Dimulakan
Dalam persekitaran Docker-compose, adalah penting untuk memastikan perkhidmatan bergantung , seperti pangkalan data, sedia untuk sambungan sebelum perkhidmatan lain yang bergantung padanya bermula. Artikel ini menyediakan penyelesaian untuk menyemak kesediaan sambungan MySQL menggunakan pilihan healthcheck dalam Docker-compose versi 2.
Konfigurasi Pemeriksaan Kesihatan
Untuk menyediakan pemeriksaan kesihatan bagi bekas MySQL , takrifkannya dalam konfigurasi bekas. Di bawah ialah contoh pemeriksaan kesihatan:
healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 20s retries: 10
Pemeriksaan kesihatan ini menggunakan perintah ping mysqladmin untuk mengesahkan sama ada MySQL sedang berjalan dan menerima sambungan. Jika arahan kembali berjaya dalam tempoh tamat masa yang ditentukan dan had cuba semula, bekas itu dianggap sihat.
Bergantung pada Perkhidmatan Sihat
Setelah pemeriksaan kesihatan ditentukan, perkhidmatan bergantung (dalam kes ini, bekas "apl") boleh menentukan kebergantungan pada bekas MySQL menggunakan fail depende_on pilihan:
app: depends_on: db: condition: service_healthy
Konfigurasi ini memastikan bahawa bekas "apl" hanya bermula jika bekas "db" (MySQL) sihat mengikut pemeriksaan kesihatan yang ditetapkan.
Contoh Docker -compose File
Menggabungkan semuanya, berikut ialah contoh fail Docker-compose yang menggunakan ini persediaan:
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
Dengan konfigurasi ini, bekas "api" tidak akan bermula sehingga bekas "db" (MySQL) sihat dan menerima sambungan, memastikan pangkalan data sedia sebelum apl bermula.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Kesediaan Sambungan MySQL Sebelum Memulakan Perkhidmatan Bergantung dalam Docker Compose?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!