2016-08-29 6 views
0

docker 이미지를 만드는 동안 데이터베이스를 추가하고 스키마를 가져 오려고합니다. 내가 시도했을 때, 나는 아래의 오류가 발생했습니다.Mariadb 이미지 용 Dockerfile

160829 22시 32분 44초 mysqld_safe에 로깅 '/var/lib/mysql/2da0903ff372.err' 합니다. 160829 22:32:44 mysqld_safe /var/lib/mysql에서 데이터베이스로 mysqld 데몬 시작하기 160829 22:32:47 pid 파일 /var/run/mysqld/mysqld.pid에서 mysqld_safe mysqld ende d ERROR 2002 (HY000) : 소켓 '/ var/run /mysqld/mysqld.sock'(2 "No such file or directory")를 통해 로컬 MySQL 서버에 연결할 수 없음 '/ bin/sh -c/bin/bash -c "는/usr/빈/mysqld_safe에 &"& & 수면 & mysq 리터 -u 루트 -e & & MySQL의 -u 루트 포털 < /tmp/ddl.sql & & MYS "DATABASE 포털 만들기" 다음은 1

나는 이미지를 만드는 데 사용하고 무엇 Dockerfile입니다 : QL -u 루트 포털 < /tmp/dml.sql은 '비 - 제로 코드가 를 반환했습니다.

FROM mariadb:latest 
# Author 
MAINTAINER Anvar 
# Add files 
ADD my.cnf /etc/mysql/my.cnf 
ADD ddl.sql /tmp/ddl.sql 
ADD dml.sql /tmp/dml.sql 

RUN /bin/bash -c "/usr/bin/mysqld_safe &" && sleep 5 && mysql -u root -CREATE DATABASE portal" && mysql -u root portal < /tmp/ddl.sql` 

내가 뭘 잘못하고 있는지 조언 해주세요.

+1

당신은 mariaDB 이미지의 엔트리 포인트 스크립트 https://github.com/docker-library/mariadb/blob/d969a465ee48fe10f4b532276f7337ddaaf3fc36/10.1/docker-entrypoint.sh의 작은 모양이있을 때. 첫 번째 시작시 db가 초기화되었음을 알 수 있습니다. 컨테이너에서 기존의 실행 가능한 db 서버가 없으면 작업이 훨씬 일찍 실행됩니다. –

+0

답변을 보내 주셔서 대단히 감사드립니다. 실제로, 제 요구 사항은 데이터와 함께 미리 채워진 데이터베이스 스키마로 도커 이미지를 만드는 것입니다. 그것을 성취 할 수있는 방법이 있습니까? –

+0

필요에 따라 진입 점을 늘리십시오. –

답변

1

간단히 말해서, /docker-entrypoint-initdb.d/*에 DDL과 DML을 차례로 복사해야합니다. 수정 된 코드는 다음과 같습니다. docker-entrypoint.sh는 우리가 컨테이너를 회전시킬 때 실행하기위한 논리를 가지고 있습니다.

FROM mariadb:latest 
# Author 
MAINTAINER Anvar 
# Add files 
ADD my.cnf /etc/mysql/my.cnf 
ADD ddl.sql /docker-entrypoint-initdb.d/ddl.sql 
ADD dml.sql /docker-entrypoint-initdb.d/dml.sql