[ 시나리오 ]
Wordpress(설치형 블로그) Docker Image 를 사용하여 컨테이너를 활용하고 싶습니다.
Wordpress는 MySQL 컨테이너를 하나 더 필요로 합니다.
https://www.youtube.com/watch?v=EK6iYRCIjYs
https://bit.ly/docker-compose-sample
[ Docker Compose ]
복잡한 Docker 명령어를 "docker-compose.yml" 에 알아보기 쉬운 언어(지시어)로 정리하여
"docker-compose.yml" 만 실행하면 내가 원하는 Docker 환경이 알아서 세팅되겠끔 하는 것을 Docker Compose 라고 한다.
docker compose 를 실행 시킬 때.
docker-compose up
docker compose 를 끄고 싶을 때.
docker-compose down
위 시나리오에 대한 예시를 가지고 내용 확인만 해보고자 한다.
- mysql 컨테이너 생성 (지시어 : services)
- 데이터가 유실되지 않도록 HOST의 db_data 와 /var/lib/mysql을 연결한다. (지시어 : volumes)
- MySQL에 필요한 환경 변수 세팅 (지시어 : environment)
- Wordpress 앱 컨테이너 생성
- MySQL 이 먼저 설치되어야 하기 때문에 이러한 선행과 후행을 구별해주기 위해 지시어 depends_on 을 작성한다. (db 앱 먼저 생성)
- 컨테이너 이름은 app
- HOST의 app_data 와 연결 ( 지시어:volumes )
- Web Server 의 경우 외부 포트와 연결되어야겠지만, MySQL Server 같은 경우에는 보안상 외부 포트와 연결되지 않아야 한다.
- Web Server 와 8080:80 포트로 연결 ( 지시어 : ports )
- app 어플리케이션이 데이터베이스에 접근하기 위해서는 데이터베이스에 대한 정보들이 필요하다. (지시어:environments)
- 데이터베이스의 주소에 접속할 때, 아이피 주소가 아니라 컨테이너의 이름으로 접속 하였는데 이러한 편의를 누리기 위해서는 네트워크를 만들어야 한다.
- shell 에서는 아래 이미지와 같이 network를 만들고, 각 컨테이너에 대해 네트워크와 연결을 시켜주어야 한다.
- Docker Compose 에서는 네트워크를 만들고, 연결하는 작업이 자동으로 진행되기 때문에 이러한 과정을 할 필요가 없다.
- localhost:8080 으로 접속해보자.
8080:80 -> APP 컨테이너 -> web Server -> PHP -> /var/www/html -> app_data -> db가 어디있지 -> 3306 포트 -> MySQL Server -> /var/lib/mysql -> db_data -> PHP에 데이터 전달 -> Web Server -> 웹브라우저 -> Wordpress 실행
'Docker' 카테고리의 다른 글
NVIDIA Docker Image list (0) | 2023.03.02 |
---|---|
[Ubuntu 22.04] NVIDIA-Docker 설치 (0) | 2023.03.02 |
[Docker 입문] Docker로 프로젝트별 컨테이너 만들기(commit 실습) _생활코딩 (0) | 2023.01.23 |
[Docker 입문] 도커에서 이미지를 만드는 방법 _생활코딩 (0) | 2023.01.23 |
[Docker 입문] 호스트와 컨테이너의 파일시스템 연결 _생활코딩 (0) | 2023.01.23 |