2014-07-10 2 views
6

Im tutum-docker-mysql dockerfile을 사용하여 docker 이미지가 생성되고 실행되도록하려면 docker 파일은 root라는 이름과 암호가없는 사용자를 생성합니다. dockerfile이 뭔가를 추가 :dockerfile을 사용하여 mysql에 기본 데이터베이스 생성하기

RUN mysql -uroot -p"" && mysql create database test; 

를 그래서 나는 고정 표시기 파일에서 이미지를 빌드 할 때, 데이터베이스가 이미 있어야합니다.

+0

에서 예? – Behe

+0

몇 가지 명령을 시도하고 diff 오류가 발생했습니다. mysql -uroot "데이터베이스 테스트 생성"을 시도했는데 오류가 있습니다 : ERROR 2002 (HY000) : 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다 '/ var/run/mysqld /mysqld.sock '(2) – Mohammad

+0

또한 mysqld -uroot -p "" "데이터베이스 테스트 생성"을 시도했으며 오류는 : 140710 10:12:28 [경고] key_buffer_size 대신 unique option 접두사 key_buffer 사용이 중단되고 향후 릴리스에서 제거 될 예정입니다. 대신 성명을 사용하십시오. – Mohammad

답변

11

다음을 수행하여 tutum-docker-mysql 이미지에 데이터베이스를 추가하는 목표를 달성 할 수있었습니다.

git clone https://github.com/tutumcloud/tutum-docker-mysql.git 
cd tutum-docker-mysql 
vi create_mysql_admin_user.sh 

는 보통 .sh 파일의 내부 내가 바로 이미있는 두 개의 "MySQL의 -uroot"라인 아래 라인을 추가했다. 나는 단순히 다음을 추가했습니다 :

mysql -uroot -e "create database test;" 

그 .sh 파일로 변경 한 후 간단히 도커 이미지를 작성했습니다. 컨테이너가 실행

docker run -d -p 3307:3306 tutum/mysql 

되면, 당신이 사용하는 암호와 컨테이너의 IP 주소를 알아야 다음 고정 표시기 이미지가 구축 된 후

docker build -t tutum/mysql . 

, 내가 좋아하는 뭔가를 실행할 수 있습니다 . 암호를 얻으려면 당신은 단순히

docker logs 2976a81f1a9b19787d9bde893c831b7e6586d7c8391ccd222ad29b02c282d896 

을하지만 물론 그 위의 "고정 표시기 실행"명령에서 반환, 컨테이너 ID를 사용합니다. 이제 비밀번호가 있으니 IP 주소가 필요합니다. 나는 그것을함으로써 얻는다.

docker inspect 2976a81f1a9b19787d9bde893c831b7e6586d7c8391ccd222ad29b02c282d896 

"게이트웨이"주소를 확인하십시오. 비밀 번호와 IP 주소를 사용하여 컨테이너의 바깥 쪽에서이 mysql 명령을 수행 할 수있었습니다.

mysql -uadmin -pJcM5FCphMOp4 -h172.17.42.1 -P3307 

여기서 ip 주소와 암호는 앞의 두 가지 도커 명령에서 얻은 값입니다. 그 명령이 실행 된 후 다음 결과와 함께 "데이터베이스 표시"명령을 실행할 수 있습니다.

mysql> show databases; 
+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| mysql    | 
| performance_schema | 
| test    | 
+--------------------+ 
4 rows in set (0.00 sec) 

mysql> 

나는 Dockerfile을 수정하여 잠시 노력했다. 나는 그것이 가능할 수도 있다고 생각하지만 잠시 후 위의 해결책을 훨씬 더 빠르고 간단하게 발견했다.

3

컨테이너 시작시 ON_CREATE_DB env 매개 변수를 전달할 수 있습니다. 당신이하려고하면 어떻게됩니까 tutum README.md

docker run -d -p 3306:3306 -e ON_CREATE_DB="newdatabase" tutum/mysql

관련 문제