지난 포스팅에 이어서 mariadb 컨테이너를 만들고 네트워크를 통해서 둘을 연결해보자
위 글과 세부 설정이 조금 다릅니다.
1. mariadb 컨테이너 생성
$ docker run -d --name mariadbtest -v ${PWD}/database:/var/lib/mysql -p 3306:3306 -e MARIADB_ROOT_PASSWORD=1234 -e MARIADB_DATABASE=django --net=django mariadb:10.5
컨테이너 이름은 반드시 mariadbtest 로 해야 한다.
django settings파일에서 database의 host명을 mariadbtest라고 지정했기 때문.
같은 이유로 MARIADB_ROOT_PASSWORD도 1234로 지정해 줘야한다.
-v ${PWD}/database:/var/lib/mysql
현재 폴더의 database 폴더에 mariadb의 db들이 저장되도록 bind volume을 걸어주어 docker가 해당 폴더를 관리할 수 있게 했다.
database 폴더가 없으면 자동으로 만들어지고 /var/lib/mysql 의 파일들이 링크된다.
--net=django
이전 포스팅에서 만든 django 네트워크에 mariadbtest 컨테이너를 연결시켜 준다.
2. djangotest 컨테이너 실행
$ docker start djangotest
mariadbtest 컨테이너가 생성되었기 때문에 이전에 만들어 두었던 djangotest 컨테이너를 실행시켜 주자
3. docker 네트워크 확인하기
$ docker network inspect django
django 네트워크를 파헤쳐 보자.
아래 "Containers" 를 보면
mariadbtest, djangotest 컨테이너가 있음을 확인할 수 있다.
inspect
명령어를 활용하면 network 뿐만 아니라 volume, container, image 등등 docker에 관련된 모든 정보를 자세히 볼 수 있다.
URL 명세
default : localhost:8000/
GET /stockapp/chart
= 주가 정보 chart를 보여준다.
POST /stockapp/delete/{int:id}
= id번 주가 정보를 삭제한다.
GET /stockapp/data
= db에 저장된 주가 데이터를 json 형식으로 모두 가져온다.
django와 mariadb를 연결해서 docker로 개발환경을 구축해 보았다.
local에서 django 파일을 수정해도 docker container와 폴더가 bind 되어있기 때문에 변경사항이 바로바로 반영이 된다.
실수로 mariadbtest 컨테이너를 지워도 local의 database 폴더가 있기 때문에 다시 컨테이너를 생성하면 정상적으로 연결이 된다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] docker-compose로 편하게 개발환경 구성하기 (0) | 2021.08.10 |
---|---|
[Docker] Docker 관련 tip #1 (0) | 2021.08.10 |
[Docker] Django 개발 환경 세팅 #1 (0) | 2021.08.04 |
[Docker] MariaDB - docker로 관리하기 (0) | 2021.07.29 |
[Docker] container, image 삭제 (2) | 2021.07.26 |