programing

django.db.db.ss.Operation Error: (2002, "'db'의 MySQL 서버에 접속할 수 없습니다(115)"

minecode 2023. 2. 3. 20:55
반응형

django.db.db.ss.Operation Error: (2002, "'db'의 MySQL 서버에 접속할 수 없습니다(115)"

이것은 이미 물어봤지만, 어떤 대답도 나에게 도움이 되지 않았다.이게 제 설정입니다.docker-compose는 django의 웹 앱과 mariadb의 데이터베이스라는 두 가지 서비스로 실행하고 있습니다.이 정확한 구성으로 로컬 DB에 정상적으로 연결할 수 있지만 settings.py의 호스트만 localhost로 변경할 수 있습니다.내가 달릴 때docker-compose up데이터베이스에 접속하려고 하면 즉시 웹 서비스가 중지되어 이 오류가 반환됩니다.

django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'db' (115)")

도커 파일

FROM python:3.7

RUN mkdir /app

COPY requierments.txt /app/

WORKDIR /app

RUN pip install -r requierments.txt

COPY . /app/

docker-param.yml

version: '3'

services:
  db:
    image: mariadb:10.2
    expose:
      - 3306
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: 'django_backend'
      MYSQL_USER: 'django'
      MYSQL_PORT: '3306'
      MYSQL_PASSWORD: 'mysql1234pass'
      MYSQL_ROOT_PASSWORD: 'password'

  web:
    build: .
    image: backendblockchain_web
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db
    links:
      - db
    command:
      - /bin/bash
      - -c
      - |
        sleep 10
        python3 manage.py migrate
        python3 manage.py runserver 0.0.0.0:8000

설정.화이

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_backend',
        'USER': 'django',
        'PASSWORD': 'mysql1234pass',
        'HOST': 'db',
        'PORT': '3306'
    }
}

당신의.WEB컨테이너는 DB가 가동되기 전에 시작됩니다.다음 방법 중 하나를 사용하거나 먼저 DB를 수동으로 시작해야 합니다.docker-compose up db

db 도커 이미지가 정상적으로 실행되고 있는지 확인합니다.실행 중인 DB 컨테이너의 로그를 확인합니다.도커 컴포지트 파일에서 MariaDB를 정상적으로 사용할 수 있습니다.

db:
image: mariadb
ports:
  - 3306:3306
environment:
  MYSQL_USER: "****"
  MYSQL_PASSWORD: "****"
  MYSQL_DATABASE: "*****"
  MYSQL_RANDOM_ROOT_PASSWORD: "yes"

파티에는 조금 늦었지만 포트에 접속하는 경우33060좌현으로 변경하다3306.

두 개의 포트가 노출되는 걸 알아채는데 꼬박 한 시간이 걸렸어요

언급URL : https://stackoverflow.com/questions/58547120/django-db-utils-operationalerror-2002-cant-connect-to-mysql-server-on-db

반응형