Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memastikan Kesediaan Sambungan MySQL Sebelum Memulakan Perkhidmatan Bergantung dalam Docker Compose?

Bagaimana untuk Memastikan Kesediaan Sambungan MySQL Sebelum Memulakan Perkhidmatan Bergantung dalam Docker Compose?

DDD
Lepaskan: 2024-12-09 15:40:12
asal
646 orang telah melayarinya

How to Ensure MySQL Connection Readiness Before Starting Dependent Services in Docker Compose?

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan