본문 바로가기

인프라/도커

데이터 수집 후 도커로 공유하기 mysql, redis

  1. 로컬에서 mysql, redis에 데이터 저장
  2. 덤프로 데이터를 포함해서 이미지로 빌드
  3. 도커 허브에 올리기
  4. 공유 받을 사람이 도커 허브에서 pull

Mysql 공유

1. 현재 데이터 백업 (덤프) - 로컬에서 실행되고 있는 mysql (도커 x)

mysqldump -u root -p stock_db > stock_db_dump.sql

2. MySQL 컨테이너 생성 및 데이터 복원

docker run --name stock-db-container -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_DATABASE=stock_db -d mysql:8.0

컨테이너가 실행 후, 데이터베이스에 stock_db_dump.sql을 복원

docker cp stock_db_dump.sql stock-db-container:/stock_db_dump.sql
docker exec -i stock-db-container mysql -u root -padmin stock_db < stock_db_dump.sql

3. 컨테이너에서 이미지 생성

이제 컨테이너를 기반으로 이미지를 생성하자.

docker commit stock-db-container qpwisu/stock-db:latest

4. Docker Hub 로그인 및 푸시

Docker Hub에 로그인하고 이미지를 업로드하자.

docker login
docker push qpwisu/stock-db:latest

5. 다른 환경에서 실행하기

이제 다른 환경에서 이 이미지를 실행하면 stock_db가 포함된 상태로 실행됨.

docker run -d --name stock-db-container -e MYSQL_ROOT_PASSWORD=admin -p 3306:3306 qpwisu/stock-db:latest

Redis

1. Redis 컨테이너 실행

docker run --name redis-container -d -p 6379:6379 redis:latest

2. Redis 데이터 백업 (덤프)

Redis 데이터는 /data 경로에 dump.rdb 파일로 저장됨.

docker exec -it redis-container redis-cli SAVE

3. 컨테이너에서 이미지 생성

데이터가 포함된 상태에서 이미지를 생성

docker commit redis-container qpwisu/redis-db:latest

4. Docker Hub 로그인 및 푸시

Docker Hub에 로그인하고 이미지를 업로드

docker login
docker push qpwisu/redis-db:latest

5. 다른 환경에서 실행하기

이제 이 이미지를 다른 환경에서 실행하면 dump.rdb 데이터가 포함된 상태로 Redis가 실행

docker run -d --name redis-container -p 6379:6379 qpwisu/redis-db:latest

위에서 생성한 두 이미지 한번에 pull

1. docker-compose.yml 파일 작성

version: '3.8'

services:
  mysql:
    image: qpwisu/stock-db:latest
    container_name: stock-db-container
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: admin
      MYSQL_DATABASE: stock_db
    ports:
      - "3306:3306"

  redis:
    image: qpwisu/redis-db:latest
    container_name: redis-container
    restart: always
    ports:
      - "6379:6379"

2. Docker Compose 실행

docker-compose up -d

'인프라 > 도커' 카테고리의 다른 글

도커 허브 사용법 (+buildx)  (0) 2024.03.15
도커 자주 쓰이는 커맨드 정리  (0) 2024.03.15