ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [docker] docker compose 로 mysql 서버 띄우기
    docker 2024. 12. 7. 14:07

    docker compose 로 mysql 서버 띄우기

     

    Docker Compose

    여러개의 컨테이너를 하나의 서비스로 정의하고 하나의 묶음으로  관리할 수 있게 해주는 툴

     

    도커 컴포즈를 사용하는 이유

    1. 여러개의 컨테이너를 관리하는데 용이하다

    여러개의 컨테이너로 이루어진 어플리케이션을 한번에 관리할 수 있다. 여러 컨테이너를 하나의 환경에서 실행하고 관리하는데 도움이된다.


    2. 복잡한 명령어로 실행시키던것을 간소화할 수 있다.

    이전에 mySQL 이미지를 컨테이너로 실행시킬 쓰던 명령어.

    docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 
    -v /Users/kiju/dev/study_data/docker-volume/mysql_data:/var/lib/mysql -d mysql


    이는 너무 복잡하다.  도커 컴포즈를 쓰면

    Docker compose up

    명령어 하나로 간단하게 쓸 수 있다.

     

     

     

    도커컴포즈 활용하기

    1. compose.yml 파일 작성하기

    services:
      My-web-server:
        contaienr_name: webserver
        image: nginx
        ports:
          - 80:80
    services: my-web-server // 도커 컴포즈에서 하나의 컨테이너는 하나의 서비스라고 부른다. 서비스의 이름설정
    container_name: webserver // 컨테이너를 띄울때 붙이는 이름. docker cli 에서 --name 과 같다
    image: 컨테이너에 사용되는 이미지
    port: 호스트 컴퓨터의 포트와 컨테이너의 포트를 매핑

     

     

    2. compose 파일 실행

    Docker compose up -d
    // 옵션
    -d : 백그라운드 실행



    3. 컴포즈 실행 현황보기

    docker compose ps
    docker ps



    4. 도커 컴포즈 내리기

    Docker compose down



     

     

    그외 쓰이는  docker compose 명령어)

     

    docker compose에 정의된 컨테이너 목록보기

    // compose.yml에 정의된 실행중인 컨테이너 목록 보기
    Docker compose ps
    
    // compose.yml에 정의된 모든 컨테이너 목록 보기
    Docker compose ps -a



    compose.yml에 정의된 컨테이너들의 로그보기

    Docker compose logs

     

     

     

    도커 컴포즈 이미지 빌드

    Compose.yml에서 정의한 이미지 파일에서 코드가 변경되었을때, 이미지를 재빌드해서 컨테이너를 실행시켜야 변경사항이 적용된다.

    이때 필요한 옵션이다.

    // 이미지가 없을 때만 빌드해서 컨테이너를 실행시킨다. 이미지가 이미 존재하는 경우 이미지를 빌드하지 않고 컨테이너를 실행시킨다.
    docker compose up 
    
    // 이미지가 있건 없건 무조건 빌드를 다시해서 컨테이너를 실행시킨다.
    docker compose up --build




    이미지 다운받기 / 업데이트하기

    Docker compose pull
    로컬에 이미지가 없다면 이미지 다운.
    
    로컬환경에 이미지가 있지만, 도커허브의 이미지와 다른 경우 업데이트한다.








    docker compose 이용해서 mysql 서버 띄우기

    기존의 복잡하고 긴 docker CLI 명령어때문에  컨테이너가 1개일때도 docker compose를 이용하기도 한다.

     

    compose.yml

    services:
      mysql-server:
        image: mysql
        environment:
          MYSQL_ROOT_PASSWORD: password123
        volumes:
          - ./mysql_data:/var/lib/mysql
        ports:
          - 3306:3306
    environment: CLI에서 -e 옵션과 동일
    volumes: CLI에서 -v 옵션과 동일

     

     

    기존 도커 CLI 코드

    $ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 
    -v ./mysql_data:/var/lib/mysql -d mysql

     

     

    도커 컴포즈 실행

    docker compose up -d

     

     

     

     

     

    이처럼 docker CLI는 compose.yml로 대응이 서로 가능하다. 그 반대도 가능하다.

    이를 변환해주는 사이트도 있다.

     

    docker CLI -> compose.yml 

    https://www.composerize.com/

     

     

    compose.yml -> docker CLI

    https://www.decomposerize.com/

Designed by Tistory.