2017-01-30 5 views
0

저는 mysql 도커 컨테이너를 가지고 있으며 실행 중입니다. 나는 그것에 들어가서 mysql 프롬프트를 볼 수있다. 나는 그것에 외부 저장 장치를 설치하고 싶지 않다. 이 컨테이너를 시작할 때마다 내 파일 시스템에서 test.sql 스크립트를 실행하여 DB를 만들고 이러한 작업을 수행하고 싶습니다. 현재 작업 디렉토리에있는 스크립트를 실행하면 불만이 제기됩니다. 나는 이것이 사소한 것이지만 문제를 파악할 수 없다는 것을 알고있다.mysql 스크립트 도커를 실행합니다.

/microservices/mysqlcontainer] 고정 표시기 간부 3a21e5e3669d/빈/SH -c 'MySQL의 -u 루트 < ./test.sql -ppwd' /빈/SH : ./test.sql : 해당 파일이나 디렉토리

+0

test.sql은 이미지/컨테이너 안에 있습니까? 'docker exec 3a21e5e3669d ls -l test.sql' – BMitch

+0

아니요. 문제가 될 수도 있지만 일부 포럼에서는이 구문이 작동한다고 제안했습니다. 나는이 컨테이너에 연결할 수 있었고 mysql 프롬프트를 쉽게 얻을 수 있었지만 도커 exec -it mysqltest mysql -u root -ppwd – curiousengineer

답변

3

스크립트가 컨테이너 외부에 있으므로 쉘 입력 리디렉션을 포착 할 필요가 없습니다. 다음을 실행할 수 있어야합니다.

docker exec -i 3a21e5e3669d mysql -u root -ppwd <./test.sql 
+0

덕분에 리다이렉션, 파이프, stdout 등의 리눅스 개념을 이해할 수 있었다. 당신은 조금 더 자세히 "잡을 필요가 없다"고 정교합니다. 귀하의 제안은 btw에서 효과가있었습니다. – curiousengineer

+1

'/ bin/sh -c 'mysql .... BMitch

+0

감사합니다! 스프링 부트 + 넷플릭스 (netflix) 라이브러리를 사용하여 프로토 타이핑을하고있는 나의 마이크로 서비스를 도커 - ize하려고했습니다. 이것은 도움이됩니다. json 웹 토큰에 대한 인증 정보를 보관할 SQL 컨테이너가 필요했습니다. 내 인증 서비스가 DB와 대화 할 수 있고 MySQL 컨테이너를 부팅 할 때마다 db가 스크립트로 생성되므로 앞으로 나아갈 수 있습니다. 필자는 아마도 외부 파일 시스템을 마운트하는 방법을 독자적으로 읽을 것이지만 지금은 우선 순위가 아닙니다. – curiousengineer

관련 문제