2015-01-24 2 views
1

Docker에서 mysql 컨테이너를 실행하고 싶습니다. 내가 사용하는 Dockerfile은 공식 repo [here]에 정의 된 Dockerfile입니다. 나는 단지 내가이처럼 초기화 SQL 파일을 가져올 수 2 개 라인이 Dockerfile 확장 :Docker 컨테이너에서 mysql 인스턴스를 실행하십시오.

ADD my-init-file.sql /my-init-file.sql 
    CMD ["mysqld", "--init-file=/my-init-file.sql"] 

나는 데몬으로이 인스턴스를 실행하려는하지만 난 documentation에서이 명령을 실행할 때 :

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql 

컨테이너가 자동으로 종료됩니다. mysql 데이터베이스에 다른 컨테이너에있는 앱 (예 : wordpress 사이트)을 연결할 수 있도록 데몬으로 실행하고 싶습니다.

아마도 내가 뭔가를 놓치고 있습니다. 아무도 어떻게 보여줄 수 있습니까?

[편집] 내가 용기를 시작한 후 docker logs my-container를 실행하고 오류가없는 말을 잊었 :

Running mysql_install_db ... 
Finished mysql_install_db 

docker ps 더 실행 컨테이너를 보여주지는. 내 생각 엔 명령이 성공적으로 실행되었지만 mysqld 데몬이 시작되지 않는다.

답변

1

Dockerfile이 정상적으로 보입니다. 하지만 init 파일은 버그가있을 수 있습니다. MySQL이 종료되면 컨테이너가 종료됩니다.

첫 번째 디버그 단계는 로그를 보는 것입니다 :

docker logs some-mysql 

당신은 용기를 중지하거나 실행 여부를이를 사용할 수 있습니다. 바라건대, 세미콜론을 놓친 것처럼 분명하게 보일 것입니다.

로그가 도움이되지 않는 경우

은 시도하는 다음 것은 용기 들어가서 첫 손 무슨 일이 일어나고 있는지
docker run -e MYSQL_ROOT_PASSWORD=mysecretpassword -it mysql /bin/bash 

을 당신에게 당신의 용기 내부의 bash 쉘을 얻을 것이다 볼 수있다. 그럼 당신은 실행할 수

mysqld --init-file=/my-init-file.sql 

그리고 어떻게되는지보십시오. 아마도 init 파일에있는 어떤 것이 MySQL에 깨끗하게 종료되도록 알려줄 것이므로 로그는 없지만 명령은 종료됩니다.

+0

내 질문을 편집합니다. 나중에 당신의 제안을 시도 할 것입니다. – Dimitri

+0

'docker run'과 함께 제공하는 명령으로 쉘이 시작되지 않습니다. 정상입니까? – Dimitri

+0

그러면 dockerfile이 게시 한 것 이상을 수행 할 수 있습니다. 'docker run -it mysql : latest/bin/bash'를 실행하면 mysql 컨테이너에 쉘이 생깁니다. –

0

docker run-d 인수로 만든 후 컨테이너가 분리되었으며 CMD 명령 만 종료 코드를 반환하지 않은 경우 이미 데몬으로 작업하고 있습니다.

실행 컨테이너는 docker ps 명령으로 확인할 수 있습니다. docker ps -a을 실행하여 모든 컨테이너를 확인할 수 있습니다.

또한 컨테이너 외부에 mysql 포트를 열어야한다고 생각합니다. 당신은 -P 인수 또는 더 나은 방법으로 컨테이너간에 통신을 할 수 있습니다 docker links입니다.

관련 문제