-
[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
compose.yml -> docker CLI
'docker' 카테고리의 다른 글
[AWS] AWS ECR을 활용해서 EC2에서 도커로 배포하기-1 (1) 2024.12.08 [docker] docker compose로 nestJS, postgresql, redis 서버 띄우기 (0) 2024.12.07 [docker] docker로 nestJS 서버띄워보기 (0) 2024.12.07 [docker] 도커파일 만들기1 (0) 2024.12.07 [docker] docker volume으로 mysql 서버띄우기 (0) 2024.12.06