Inflearn brand logo image

인프런 커뮤니티 질문&답변

김진원님의 프로필 이미지
김진원

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

MariaDB

docker mariadb 실행

작성

·

88

·

수정됨

0

백업은 안하려고 한참 헤메다, 결국 백업으로 해결했네요..ㅎ..

  • 환경: window pc에 mariadb client 버전을 설치함

  1. dump 생성

    1. client 버전이기 떄문에, “mariadb prompt” 를 실행해서 아래의 명령어 실행
      (cmd에서 mariadb, mysql 명령어 동작 안함)

      # 생성할 위치로 이동하시거나, 덤프 생성할때 경로 작성하시요.
      cd "어느 경로"/docker_file
      # 덤프 생성
      mysqldump -u root -p --all-databases > all.sql
      
  2. Dockerfile 생성

    # Docker Hub에서 공식 MariaDB 이미지 사용
    FROM mariadb:latest
    
    # 초기화 시 자동 실행될 SQL 복사
    COPY ./all.sql /docker-entrypoint-initdb.d/
    
    # 포트 개방
    EXPOSE 3306
    
    
  3. 이미지 생성 및 컨테이너 실행

    docker build -t [당신의 게정은?]/mariadb:1.0 .
    
    docker run -d \\
      -p 13306:3306 \\
      --name mariadb \\
      --network ecommerce-network \\
      -e MARIADB_ROOT_PASSWORD=[당신의 root 비번]\\
      kimjinwon1432/mariadb:1.0
    

 

 

=============== 추가 ==============

강사님께서 알려주신 방법으로 진행해봤어요.
일단, 제 pc의 mariadb 설치경로가 "C:\Program Files" 였기 때문에, mariadb폴더 내의 data 폴더와 그 하위 파일 및 디렉터리를 C: 밑에 우리가 사용하는 docker_file 폴더에 넣었습니다

* Program Files를 경로로 잡으시면 13에러 코드가 발생합니다. 이는 권한 관련 문제이므로 cli에서 사용하시는 계정에 대해서 mariadb 폴더 내부에 권한을 주셔도 소용이 없어요.
* 이 과정은 이전에 설치한 mariadb 이미지가 있으면 삭제?하거나 이미지의 이름을 변경해서 진행하세요.(전 삭제함)
* 제 pc의 mariadb 의 버전이 11.4.2여서, docker에서 사용할 수 있는 가장 근접한 버전으로 진행했습니다.

 

docker run -d -p 13306:3306 --network ecommerce-network \
  -e MARIADB_ROOT_PASSWORD=[비번] \
  --name mariadb -v "C:\study\SpringCloud\docker_files\data:/var/lib/mysql" \
  mariadb:11.4.7

이렇게 하시면 docker exec -it ~~~ /bin/bash를 통해서 db에 접속 후 데이터베이스를 확인하면 로컬에서 작업했던 db의 데이터가 docker로 전해진 것을 확인 할 수 있어요.

 

 

 

답변 2

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

Docke로 mariadb를 실행할 때, 초기 데이터를 지정하는 부분에 대해서 작업 중이신 것 같습니다.

작업 하신 것처럼, sql 로 덤프 데이터를 준비하신 다음에 진행하시거나, 볼륨 마운트를 통해 Host PC에 있는 데이터를 지정하는 방법도 있을 것 같습니다. DB 파일을 아래와 같은 명령어로 지정하실 수도 있습니다.

docker run -d -v /path/on/host:/var/lib/mysql mariadb:latest

정보 공유 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

김진원님께서 Docker를 활용하여 MariaDB를 설정하는 과정에서 여러 어려움을 겪으신 것 같습니다. 특히, 백업 방식을 통해 문제를 해결하셨다고 하셨는데, 이를 통해 MariaDB를 Docker 환경에 잘 설정하신 듯합니다. 아래에 지원이 될 만한 추가 자료를 제공하겠습니다.

MariaDB와 Docker를 활용하면서 백업 및 실행 과정에서 중요한 부분을 몇 가지 정리하겠습니다:

  1. 백업 생성 및 복구:

    • mysqldump 명령어를 사용하여 백업 파일을 생성하고, 이를 Docker 이미지에 포함하면 초기화 과정에서 데이터를 자동으로 복구할 수 있습니다. 이는 김진원님이 작성하신 Dockerfile에서 COPY ./all.sql /docker-entrypoint-initdb.d/ 부분으로 처리되었습니다.
  2. Docker 환경에서 MariaDB 실행:

    • MariaDB 이미지를 빌드하고 실행할 때, docker builddocker run 명령어를 사용하여 MariaDB 컨테이너를 구축할 수 있습니다. 환경 변수 -e MARIADB_ROOT_PASSWORD를 통해 root의 비밀번호를 설정하는 것은 매우 중요하죠.
    • 포트 매핑을 통해 로컬 환경의 특정 포트를 컨테이너의 MariaDB 포트와 연결하는 부분도 있어서, 로컬 호스트와의 연결을 관리할 수 있습니다.

추가로, Docker와 MariaDB 관련하여 동일한 주제의 문제를 겪는 학습자들에게 도움이 될 만한 관련 게시물들을 찾아보았습니다:

  1. Docker로 mariadb 배포 시 문제 발생: 이 게시물은 포트 충돌 문제 등 MariaDB 컨테이너 실행 시 발생할 수 있는 일반적인 오류에 대한 해결책을 제시합니다.

  2. 안녕하세요! 질문이 있습니다. (mariadb 관련): Dockerfile 설정 문제로 인해 MariaDB 컨테이너가 예상하지 못한 상태가 될 때의 해결 방법을 제공합니다.

이 정보가 김진원님의 Docker MariaDB 환경 설정에 도움이 되길 바라며, 추가적인 질문이 있다면 언제든지 말씀해 주세요. 궁금한 점이 있을 때 지식을 나누는 것은 언제나 환영입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김진원님의 프로필 이미지
김진원

작성한 질문수

질문하기