programing

maria가 있는 도커 컨테이너에 SQL 덤프 파일 설치DB

goodsources 2022. 10. 10. 18:34
반응형

maria가 있는 도커 컨테이너에 SQL 덤프 파일 설치DB

도커의 기본을 배우고 있을 뿐인데, 로컬 시스템에서 SQL 파일을 Import하는 데 골머리를 앓고 있습니다.Windows 10을 사용하고 있으며 도커 컨테이너가 공유 드라이브에 액세스하도록 허용했습니다.도커 허브에서 가져온 마리아 DB의 기본 이미지로 Import하고 싶은 SQL 파일이 D에 있습니다.

이미지에 그 sql 파일을 설치하는 명령어를 찾아 컨테이너 sql 명령어프롬프트 내부에서 이미지를 직접 Import하려고 했지만 파일 오픈에러가 발생했습니다.

다음은 제가 시도한 두 가지 방법인데, sql 덤프를 어디에 저장하고 어떻게 Import합니까?

mysql 명령줄을 통해 메서드1이 시행되었습니다.

winpty docker run -it --link *some-mariadb*:mysql --rm mariadb sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

그리고나서

use *database-created* // previously created 

그리고나서

source d:/sql_dump_file.sql

방법 2

docker exec -i my-new-database mysql -uroot -pnew-db-password --force < d:/sql_dump_file.sql

2016년 5월 12일 갱신

그래서 놀던 실망스러운 주말이 지나고 나서.D: 드라이브를 작동시킬 때 디버깅할 수 없는 알 수 없는 문제가 있는 것 같아서 현재 드라이브를 C: 드라이브로 변경했습니다.

그런 다음 컨테이너에 마운트된 볼륨을 확인하기 위해 inspect 명령을 찾았습니다.다음과 같은 것이 있습니다만, 파일이 존재하지 않기 때문에 SQL로 Import할 수 없습니다만, 도커에 SQL 파일이 있고 마운트되어 있다고 명시되어 있습니다.C의 메인 디렉토리에 map_me라는 폴더를 만들었습니다.

docker inspect dbcontainer

       "Mounts": 
           [
            {
                "Source": "/map_me",
                "Destination": "/docker-entrypoint-initdb.d/sl_dump_fil‌​e.sql",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
           ]

다음 사항을 권장합니다.

마운트:sql_dump_file.sql/docker-entrypoint-initdb.d/컨테이너를 생성할 때 사용합니다.공식 MariaDB 이미지는 시작 시 복원됩니다.

docker run -d --name <containername> -v d:/sql_dump_file.sql:/docker-entrypoint-initdb.d/sl_dump_file.sql <environment_variables> <imagename> <startup commands>

그래서 몇 가지 조정과 이해를 거친 후 테스트를 거쳐 결론에 도달했습니다. 도커 구성이 가장 좋은 방법입니다.따라서 첫 번째 폴더에는 설정을 수행하는 my.cnf 파일이 포함되어 있습니다.다음으로 @Farhad가 식별한 다른 폴더는 .sql 파일을 삽입하기 위해 사용됩니다.

version: "2"

services:

    mariadb_a:
        image: mariadb:latest
        ports: 
         - "3306:3306"
        environment:
         - MYSQL_ROOT_PASSWORD=111111
        volumes:
         - c:/some_folder:/etc/mysql/conf.d
         - c:/some_other_folder:/docker-entrypoint-initdb.d

언급URL : https://stackoverflow.com/questions/40925822/install-an-sql-dump-file-to-a-docker-container-with-mariadb

반응형