docker-compose를 통해 django 서버와 mysql 서버를 띄우려고했다

고병찬·2024년 7월 5일

TIL

목록 보기
5/54

docker-compose를 통해 django 서버와 mysql 서버를 띄우려고했다.

그런데 에러가 발생했다.

에러1 : google-auth를 임포트할 수 없음
원인 : requirements.txt에 google-auth가 없음
해결

pip install google-auth
pip freeze | grep google-auth

해서 나온거 requirements.txt에 복붙!

에러2 : django 서버에서 mysql 서버에 연결하지 못함
원인 : 데이터베이스 호스트 설정에 문제가 있음
해결
settings.py에서

DATABASES = {
    'default': {
        ...
        'HOST': os.environ.get('DB_HOST', "db이름"),
        # db이름 : docker-compose.yml에서 설정한 db이름
        ...
    }
}

docker-compose.yml에서

services:
  django서버이름:
  # django서버이름 : 만든 django 서버의 이름
    ...
    environment:
      - DB_HOST=db이름
    ...

각자의 db이름과 django 앱 이름에 맞게 바꿔 넣으세요.

추가 문제 : db가 다 준비되기 전에 django에서 연결 시도
해결
docker-compose.yml에서

services:
  db이름:
    ...
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
  django서버이름:
    ...
    depends_on:
      db:
        condition: service_healthy

느낀점

도커 어렵다... 왜 문제인지 근본적인게 확 와닿지 않는다.

profile
안녕하세요, 반갑습니다.

0개의 댓글