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

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

Barbara Streisand
Barbara Streisandasal
2024-12-24 13:01:14221semak imbas

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

Mengesahkan Kesediaan Sambungan MySQL dalam Docker Compose

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:

  • Menyemak sama ada direktori pangkalan data dicipta: Walaupun mencipta direktori pangkalan data adalah langkah yang perlu, ia tidak menjamin MySQL bersedia untuk menerima sambungan.
  • Mendapatkan semula versi MySQL: Ujian ini memberikan maklumat tentang pelayan MySQL tetapi tidak menunjukkan sama ada ia sedia untuk digunakan.
  • Ping pentadbir MySQL : Kaedah ini menandakan bekas sebagai sihat, tetapi ia mungkin tidak menggambarkan MySQL dengan tepat kesediaan.

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!

Kenyataan:
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