[제 2 강] 로컬 환경에서 도커를 활용해보자!
이번 포스팅에서는 도커 compose에 대해 알아보겠습니다.
Docker Compose란 무엇일까요?
도커 컴포즈(Docker Compose)는 여러 개의 도커 컨테이너를 하나의 단위로 정의하고 실행할 수 있게 해주는 도구입니다. 이를 통해 복잡한 애플리케이션을 여러 컨테이너로 구성하고 관리하는 작업을 간편하게 할 수 있습니다.
간단히 말해, 도커 컴포즈는 애플리케이션을 구성하는 여러 컨테이너를 하나의 설정 파일에 정의하고, 그 설정 파일을 실행하여 모든 컨테이너를 동시에 실행하는 기능을 제공합니다. 이렇게 함으로써 여러 컨테이너 간의 연결, 설정, 환경 변수, 볼륨 마운트 등을 편리하게 관리할 수 있습니다.
아직 머리에 잘 안들어오시나요? 실습으로 한번 보겠습니다.
여기 이렇게 도커 컨테이너를 만드는 명령이 있습니다.
하지만 컨테이너를 만들때마다 이걸 하나씩 실행하거나, 우리들을 할 줄 알아도 동료들은 모를 수도 있고 조금은 부담스러울 수도 있을것 같습니다.
이럴때 docker compose가 사용되는데요.
docker-compose.yml 이라는 파일을 만들어 도커 컨테이너를 만드는 명령을 작성후 docker-compose up 명령을 실행하면 놀랍게도 컨테이너가 만들어집니다. 컨테이너를 종료하려면 docker-compose down 명령을 입력하면 됩니다.
지금부터 docker compose에대해 자세히 알아보겠습니다.
시나리오를 한번 생각해보겠습니다.
모두 wordpress를 아시나요?
간단히 말해서 워드프레스는 설치형 블로그입니다.
이 워드프레스를 도커 이미지를 이용해서 컨테이너를 만들어서 실행하고 싶은데요.
실행하려면 워드프레스 도커 이외에 MySQL 컨테이너가 하나 더 필요합니다.
이 두개를 연결시키면 이렇게 할 수 있습니다.
웹브라우저에서 워드프레스에 접속을하면 워드프레스 컨테이너가 mysql컨테이너로 접속해서 여러가지 작업을 하고 그 결과를 가져오고 워드프레스로 가져와 다시 웹브라우저로 보내주게 됩니다.
이런식에 시나리오를 docker compose를 이용해 사용해보겠습니다.
먼저 이렇게 파일을 만들어주고
터미널에 docker-compose를 입력해주고 난뒤, 웹브라우저에 localhost:8080 을 입력하면
wordpress에 잘 접속되는 것을 확인해 볼 수 있습니다.
이게 사실 간단해보이지만 저희는 지금 꽤 복잡한 로직을 수행한 것입니다ㅎㅎ
웹브라우저에 localhost:8080을 땅!하고 치면 어떤 일이 일어난 것 일까요?
호스트의 8080 포트로 들어오면 그게 80번 포트에 연결되어 있는 app 컨테이너로 접속이 연결이 됩니다.
그러면 80 포트에서 리스닝하고 있는 WebServer의 접속이 들어갈것이고,
웹서버는 php에게 요청을 넘기고 php는 /val/www/html에 위치하고 있는 php 애플리케이션을 읽어서 그 내용대로 동작하게 됩니다.
그때 코드의 뭐 예를 들면 mysql_connect('db', 'wordpress_user', '123456'); 이라고 입력했다치면 여기서 'db'는 host name을 의미하는데요. 그러면 이 db가 어디에 있느냐? 바로 같은 네트워크에 접속되어 있는 db라는 컨테이너를 의미하는 것입니다.
그렇다면 db 컨테이너가 접속되어있는 3306 포트로 접속하는 것입니다.
그다음에는 무슨일이 일어날까요? 3306을 리스닝하고 있는 mysqlserver를 받고 /var/lib/mysql을 읽고 db_data라는 폴더에서 데이터를 꺼내서 그 결과를 php에 줄것이고 php는 웹서버에게 응답할 것이고 웹서버는 다시 웹브라우저에게 결과를 알려주는 겁니다.
좀 이해가 되시나요? 이제 저희들은 도커 컴포즈를 이용해서 복잡한 컨테이너 들의 관계를 명확하게 문서화 할 수 있게 된 것 입니다👏👏!!
- 프리온보딩 백엔드 챌린지 8월(도커 뽀개기)
'BackEnd > BackEnd_Docker' 카테고리의 다른 글
[1주차] 도커의 개념 및 기본 사용법 (0) | 2023.08.03 |
---|