[Docker] 멀티 컨테이너 서비스 구성 (feat. Docker Compose)

2024. 11. 4. 16:55·OS/Docker

# 멀티 컨테이너 서비스 구성

 

이번에는 wordpress와 mysql을 이용한 web application을 구성해 볼 것이다. 구성을 할 때 멀티 컨테이너 서비스를 사용하여 구성을 해볼 것이다.  이번 구성은 다음 그림과 같이 수행을 해볼 것이다.


# 디렉터리 및 볼륨 생성

ubuntu@docker:~$ mkdir my-webdb && cd $_
ubuntu@docker:~$ docker volume create mydb_data
ubuntu@docker:~$ docker volume create myweb_data

 

먼저 my-webdb라는 디렉터리를 생성하고 이동해준다. 이 디렉터리 안에서 docker 설정 파일 등을 관리할 것이다. 

다음으로 mydb_data 와 myweb_data 라는 두 docker 볼륨을 생성해준다. 

  • mydb_data : Mysql 데이터 베이스 데이터를 저장해준다.
  • myweb_data : wordpress 웹 서버의 데이터를 저장해준다. 

 

# 디렉터리 및 볼륨  확인

ubuntu@docker:~/my-webdb$ docker volume ls | grep my
ubuntu@docker:~/my-webdb$ docker inspect --type volume mydb_data
ubuntu@docker:~/my-webdb$ docker inspect --type volume myweb_data

 

 

# 네트워크 생성

ubuntu@docker:~/my-webdb$ docker network create my-webdb-net
 
// 네트워크 확인 
ubuntu@docker:~/my-webdb$ docker network ls
// 생성된 네트워크가 제대로 설정이 되엇는지
ubuntu@docker:~/my-webdb$ docker network inspect my-webdb-net

 

다음으로 my-webdb-net 이라는 네트워크를 생성해줬다. 이 네트워크의 MySQL 과 Worldpress 컨테이너 간의 통신을 담당하는 역할을 한다. 

 

 

# MySQL 컨테이너 실행

ubuntu@docker:~/my-webdb$ docker run -itd \
--name=mysql_app \
-v mydb_data:/var/lib/mysql \
--restart=always \
-p 3306:3306 \
--net=my-webdb-net \
-e MYSQL_ROOT_PASSWORD=password# \
-e MYSQL_DATABASE=wpdb \
-e MYSQL_USER=wpuser \
-e MYSQL_PASSWORD=wppassword \
mysql:8.0-debian

 

MySQL  8.0 컨테이너를 생성하고 실행해줬다. (설명)

 

  • --name=mysql_app = 컨테이너 이름을 mysql_app으로 지정.
  • -v mydb_data:/var/lib/mysql = mydb_data 볼륨을 /var/lib/mysql 경로에 마운트하여 데이터를 저장.
  • --restart=always = 컨테이너가 종료되면 자동으로 재시작
  • -p 3306:3306 = 호스트와 컨테이너 간의 포트를 매핑하여 외부 클라이언트가 MySQL에 접근할 수 있도록 함.
  • --net=my-webdb-net = my-webdb-net 네트워크에 연결.
  • -e 옵션 = MySQL 초기 설정(루트 비밀번호, 데이터베이스 이름, 사용자 이름 및 비밀번호)을 지정했다.

 

 


 

# WordPress 컨테이너 실행

ubuntu@docker:~/my-webdb$ docker run -itd \
--name=wordpress_app \
-v myweb_data:/var/www/html \
-v ${myweb-log}:/var/log \
--restart=always \
-p 8888:80 \
--net=my-webdb-net \
-e WORDPRESS_DB_HOST=mysql_app:3306 \
-e WORDPRESS_DB_NAME=wpdb \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=wppassword \
--link mysql_app:mysql \
wordpress:5.7

 

 

# 데이터베이스 확인

ubuntu@docker:~/my-webdb$ docker ps
docker exec -it mysql_app bash
mysql -uroot -p
mysql> show databases;
mysql> use wpdb;
mysql> show tables;

 

 

 

# 결과

 

 


Docker Compose 정의


 

# 실행 중인 도커 컨테이너들 다 삭제

ubuntu@docker:~/my-webdb$ docker rm -f $(docker ps -aq)

 

 

# Docker Compose 정의

ubuntu@docker:~/my-webdb$ vim docker-compose.yaml

 

 

이전에 멀티 컨테이너를 구성할 때는 하나하나 씩 컨테이너를 구성하고 실행하고 했었는데, Docker Compose를 실행하니 각 컨테이너를 하나의 묶음으로 관리할 수 있어서 실행하고 테스트 하는데 너무 많은 도움이 되었다. 앞으로 Docker Compose를 많이 활용해봐야겠다.

저작자표시 비영리 변경금지 (새창열림)

'OS > Docker' 카테고리의 다른 글

[Docker] Docker Compose  (0) 2024.11.04
[Docker] Python Flask 웹 서비스 배포  (1) 2024.11.04
[Docker(go, shell-scr)] Multi-stage Build 이미지 경량화  (0) 2024.11.04
[Docker] 데이터 지속성을 위한 Volume 구성  (0) 2024.10.30
[Docker] scratch 이미지 경량화  (3) 2024.10.28
'OS/Docker' 카테고리의 다른 글
  • [Docker] Docker Compose
  • [Docker] Python Flask 웹 서비스 배포
  • [Docker(go, shell-scr)] Multi-stage Build 이미지 경량화
  • [Docker] 데이터 지속성을 위한 Volume 구성
Kouji
Kouji
Journey to Becoming a Data & Server Engineer
  • Kouji
    Kouji's Data & Server Journey
    Kouji
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • SQL
      • Data & AI
        • Data Analysis
        • Ai
      • Cloud(AWS)
      • OS
        • Linux
        • Docker
        • Jenkins
        • Ubuntu
        • Window
        • Kubernates
        • Ansible
      • Network
        • NVIDIA
        • Network[이론]
        • Network[GNS3, Packet]
        • Network[On-Premise]
        • Network [L2, L3]
      • 트러블 슈팅
      • Life
        • My Career Stories
        • Personal
      • 개발 + OS 지식 함양
  • 블로그 메뉴

    • 홈
    • 관리 페이지
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    AWS
    VMware
    시스템엔지니어
    도커
    보안
    Linux
    인프라엔지니어
    docker
    dns
    네트워크엔지니어링
    네트워크
    L3
    스위치
    알고리즘
    OS
    인프라
    CISCO
    리눅스
    웹
    라우팅
    화이팅
    ubuntu
    클라우드엔지니어
    티스토리챌린지
    서버엔지니어
    서버
    IT
    네트워크엔지니어
    네트워크관리사
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kouji
[Docker] 멀티 컨테이너 서비스 구성 (feat. Docker Compose)
상단으로

티스토리툴바