도커 컴포즈로 세 개의 컨테이너(django, nginx, mariadb)를 동시에 실행 한 후 발생...ㅇ<-<
우선 단계적으로 파악하기 위해서,
3개의 컨테이너를 동시에 실행하지 않고 django와 mariadb만 실행해 봄.
version: "2"
services:
maria_db:
image: mariadb:latest
container_name: "maria_db"
restart: always
environment:
MYSQL_DATABASE: test_db
MYSQL_USER: test_user
MYSQL_PASSWORD: test_pass
MYSQL_ROOT_PASSWORD: test_pass
django:
build:
context: .
dockerfile: Dockerfile
container_name: django
command: python3 manage.py runserver 0.0.0.0:8006 --settings=test_project.settings.prod --noreload
volumes:
- ./test_pj/static:/staticfiles
ports:
- "8006:8006"
depends_on:
- maria_db
동일한 에러가 발생 함... 결국 nginx나 uwsgi 문제는 아니었음.
처음부터 장고와 mysql 연결이 안 된 것..
장고 세팅 파일을 수정하고 해결되었다!! (다른에러가 발생했지만)
우선 mysql socket을 못 찾는 문제는 없어졌따!!
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db명',
'USER': 'user명',
'PASSWORD': 'password',
'HOST': 'localhost', -> 'maria_db(db 컨테이너 명)'
'PORT': '3306'
}
}
HOST를 localhost로 하면 localhost는 장고 컨테이너 자체의 포트를 찾는데 당연히 없음. mysql 컨테이너로 연결해주어야 mysql 컨테이너의 3306번 포트를 찾는다.