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

Patricia Arquette
Lepaskan: 2024-10-31 02:10:29
asal
904 orang telah melayarinya

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

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

Fail Tetapan Django yang dikemas kini:

DATABASES = {
    'default': {
        ...
        'HOST': 'db',
        'PORT': '3306',
        ...
    }
}
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!