Rumah  >  Artikel  >  pangkalan data  >  Mengapa apl Django saya dalam Docker Compose tidak dapat menyambung ke MySQL, walaupun saya mempunyai nama port dan bekas yang betul?

Mengapa apl Django saya dalam Docker Compose tidak dapat menyambung ke MySQL, walaupun saya mempunyai nama port dan bekas yang betul?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 02:10:29906semak imbas

Why is my Django app in Docker Compose unable to connect to MySQL, even though I have the correct port and container name?

Penyelesaian Masalah Gagal Sambungan Django-MySQL dalam Docker Compose

Dalam artikel ini, kami akan menangani isu mewujudkan sambungan antara Django dan MySQL dalam bekas Docker menggunakan Docker Compose. Walaupun mengkonfigurasi bekas seperti yang digariskan dalam soalan, pengguna menghadapi ralat berikut:

django.db.utils.OperationalError: (2003, 'Can\'t connect to MySQL
  server on \'mariadb55\' (111 "Connection refused")')

Selepas menyelesaikan masalah yang menyeluruh, pengguna menemui punca dan penyelesaiannya. Berikut ialah cerapan penting:

Inti Utama:

  • Sahkan Ketekalan Port: Pastikan nombor port yang dinyatakan dalam tetapan Django fail sepadan dengan nombor port yang didedahkan oleh bekas MySQL. Dalam kes ini, port hendaklah 3306, bukan 3302.
  • Gunakan Nama Bekas untuk HOST: Daripada menggunakan alamat IP bekas, nyatakan nama kontena sebagai nilai HOST dalam pangkalan data Django konfigurasi.

Konfig Karang Docker Yang Dikemas Kini:

services:
  db:
    ...
    ports:
      - "3302:3306"
  web:
    ...
    command: python3 manage.py runserver 0.0.0.0:6001
    ...
    volumes:
      - .:/djcode
    ports:
      - "6001:6001"
    depends_on:
      - db

Fail Tetapan Django yang dikemas kini:

DATABASES = {
    'default': {
        ...
        'HOST': 'db',
        'PORT': '3306',
        ...
    }
}

Petua Tambahan:

  • Gunakan skrip check_db.py untuk mengesahkan bahawa port MySQL dibuka sebelum menjalankan Django.
  • Rujuk Fail Docker yang disediakan untuk membina imej Django-Py35.
  • Teroka butiran lanjut tentang repositori GitHub pengguna untuk mendapatkan cerapan tambahan.

Dengan melaksanakan perubahan ini, pengguna berjaya mewujudkan sambungan antara Django dan MySQL dalam Docker bekas, menyelesaikan ralat "Tidak dapat menyambung ke pelayan MySQL".

Atas ialah kandungan terperinci Mengapa apl Django saya dalam Docker Compose tidak dapat menyambung ke MySQL, walaupun saya mempunyai nama port dan bekas yang betul?. 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