docker-compose.yml에서 depends_on 옵션을 주어도 migrate 에러가 발생하는 문제
거두절미하고 해결법 -> 깃헙
문제는 일단 depends_on
옵션을 주었을 때 순서적으론 DB가 먼저 실행되고, django가 실행되는 건 맞다. 근데 DB가 완전히 실행되기까 django가 기다려주지 않고 migrate를 하려고 한다. 당연히 에러가 발생.
version: "3"
services:
backend:
build:
context: .
dockerfile: ./Dockerfile
container_name: backend
ports:
- 8000:8000
depends_on:
- db
environment:
- DJANGO_DEBUG=TRUE
- DJANGO_DB_NAME=db_name
command:
- bash
- -c
- |
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
volumes:
- ./:/app/
restart: always
entrypoint: ./wait-for-it.sh db_host:3306 --
docker-compose.yml과 같은 위치에 wait-for-it.sh
를 만들어주고 entrypoint: ./wait-for-it.sh db_host:3306 --
옵션을 주면 해당 port가 응답을 할 때까지 기다렸다가 다음 스크립트를 실행한다.
아 . . . 잠 잘 수 있 다 .