티스토리 뷰

카테고리 없음

DockerCompose 사용해보기

Band Of Story 2024. 10. 17. 23:44

목차



    docker Compose Logo

    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로 컨테이너 실행

    1. Docker Compose 실행
      docker-compose up --build
      이 명령어는 Docker Compose 파일을 읽고, 필요한 모든 컨테이너를 빌드 및 실행합니다.
    2. 다음 명령어로 프로젝트 디렉토리에서 모든 서비스를 실행합니다:
    3. Apache 서버 확인
    4. 웹 브라우저에서 <http://localhost:8080에> 접속하여 Apache 웹 서버가 정상적으로 실행되고 있는지 확인합니다. index.html 파일의 내용이 표시되어야 합니다.
    5. 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
    6. Apache 컨테이너에서 MySQL 데이터베이스에 연결하려면, Apache 컨테이너에 접속 후 MySQL 클라이언트를 설치하고 데이터베이스에 접속할 수 있습니다:

    3단계: Docker Compose 명령어 실습

    1. 컨테이너 상태 확인현재 실행 중인 컨테이너의 상태를 확인합니다.
    2. docker-compose ps
    3. 컨테이너 중지이 명령어는 실행 중인 모든 컨테이너를 중지하고 네트워크 및 관련 리소스를 삭제합니다.
    4. docker-compose down
    5. 컨테이너 다시 시작-d 옵션을 추가해 모든 컨테이너를 백그라운드 모드로 실행합니다.
    6. docker-compose up -d
    7. 컨테이너 로그 확인모든 컨테이너의 로그를 실시간으로 확인할 수 있습니다. 특정 서비스 로그만 확인하려면 docker-compose logs -f [서비스명] 명령어를 사용합니다.
    8. docker-compose logs -f

    4단계: Docker Compose 사용 시 주의 사항 및 팁

    1. 컨테이너 간 통신 설정
    2. Docker Compose 파일에서 정의된 네트워크 내에서 각 컨테이너가 서로 통신할 수 있도록 설정되어야 합니다. networks 섹션에서 각 서비스가 같은 네트워크에 연결되어 있는지 확인합니다.
    3. 환경 변수 파일 (.env) 사용
    4. docker-compose.yml 파일에서 환경 변수를 직접 정의하기보다, .env 파일을 만들어 관리하면 보안성과 유지보수성을 높일 수 있습니다.
    5. 데이터 영속성 설정 (볼륨 사용)
      services:
        db:
          volumes:
            - db_data:/var/lib/mysql
      volumes:
        db_data:
    6. 데이터베이스 데이터를 영구적으로 유지하려면 volumes 섹션을 사용하여 데이터가 컨테이너 외부에 저장되도록 설정할 수 있습니다.

    이 가이드를 통해 Docker Compose를 사용하여 여러 개의 서비스를 효과적으로 관리하고 컨테이너 간의 통신을 설정하는 방법을 학습했습니다. 이를 바탕으로 더 복잡한 Docker 환경을 구성하고 다양한 애플리케이션을 쉽게 배포할 수 있습니다.