티스토리 뷰
목차
Docker Compose 사용해보기: Apache와 MySQL 연결된 컨테이너 설정 가이드
Docker Compose는 여러 개의 Docker 컨테이너를 하나의 설정 파일로 관리하고 실행할 수 있는 도구입니다. 이 가이드는 Apache 웹 서버와 MySQL 데이터베이스를 Docker Compose로 구성하고 실행하는 방법을 단계별로 설명합니다. Docker Compose를 사용하여 컨테이너 간 통신을 설정하고 효율적으로 관리하는 방법을 배워보세요.
1단계: Docker Compose 파일 설정 (docker-compose.yml)
Docker Compose 파일은 여러 서비스를 정의하고, 이들이 어떻게 상호작용할지 설정합니다. 프로젝트 디렉토리의 최종 구조는 다음과 같아야 합니다.
apache-mysql-docker/
│
├── Dockerfile # Apache 웹 서버용 Dockerfile
├── db/ # MySQL 설정 파일이 있는 디렉토리
│ └── Dockerfile # MySQL Dockerfile
├── html/ # Apache 서버에서 배포할 HTML 파일
│ └── index.html # 간단한 HTML 파일
└── docker-compose.yml # Docker Compose 파일
프로젝트 루트 디렉토리에 다음과 같은 docker-compose.yml 파일을 작성합니다:
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
depends_on:
- db
networks:
- webnet
db:
build: ./db
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: myuser_password
ports:
- "3306:3306"
networks:
- webnet
networks:
webnet:
driver: bridge
2단계: Docker Compose로 컨테이너 실행
- Docker Compose 실행
이 명령어는 Docker Compose 파일을 읽고, 필요한 모든 컨테이너를 빌드 및 실행합니다.docker-compose up --build
- 다음 명령어로 프로젝트 디렉토리에서 모든 서비스를 실행합니다:
- Apache 서버 확인
- 웹 브라우저에서 <http://localhost:8080에> 접속하여 Apache 웹 서버가 정상적으로 실행되고 있는지 확인합니다. index.html 파일의 내용이 표시되어야 합니다.
- MySQL 통신 확인
docker exec -it apache-mysql-docker_web_1 /bin/bash apt-get update && apt-get install -y mysql-client mysql -h db -u myuser -pmyuser_password mydb
- Apache 컨테이너에서 MySQL 데이터베이스에 연결하려면, Apache 컨테이너에 접속 후 MySQL 클라이언트를 설치하고 데이터베이스에 접속할 수 있습니다:
3단계: Docker Compose 명령어 실습
- 컨테이너 상태 확인현재 실행 중인 컨테이너의 상태를 확인합니다.
- docker-compose ps
- 컨테이너 중지이 명령어는 실행 중인 모든 컨테이너를 중지하고 네트워크 및 관련 리소스를 삭제합니다.
- docker-compose down
- 컨테이너 다시 시작-d 옵션을 추가해 모든 컨테이너를 백그라운드 모드로 실행합니다.
- docker-compose up -d
- 컨테이너 로그 확인모든 컨테이너의 로그를 실시간으로 확인할 수 있습니다. 특정 서비스 로그만 확인하려면 docker-compose logs -f [서비스명] 명령어를 사용합니다.
- docker-compose logs -f
4단계: Docker Compose 사용 시 주의 사항 및 팁
- 컨테이너 간 통신 설정
- Docker Compose 파일에서 정의된 네트워크 내에서 각 컨테이너가 서로 통신할 수 있도록 설정되어야 합니다. networks 섹션에서 각 서비스가 같은 네트워크에 연결되어 있는지 확인합니다.
- 환경 변수 파일 (.env) 사용
- docker-compose.yml 파일에서 환경 변수를 직접 정의하기보다, .env 파일을 만들어 관리하면 보안성과 유지보수성을 높일 수 있습니다.
- 데이터 영속성 설정 (볼륨 사용)
services: db: volumes: - db_data:/var/lib/mysql volumes: db_data:
- 데이터베이스 데이터를 영구적으로 유지하려면 volumes 섹션을 사용하여 데이터가 컨테이너 외부에 저장되도록 설정할 수 있습니다.
이 가이드를 통해 Docker Compose를 사용하여 여러 개의 서비스를 효과적으로 관리하고 컨테이너 간의 통신을 설정하는 방법을 학습했습니다. 이를 바탕으로 더 복잡한 Docker 환경을 구성하고 다양한 애플리케이션을 쉽게 배포할 수 있습니다.