2016-10-14 3 views
0

tomcat 및 mySql으로 도커 이미지를 작성 중입니다. 나는 Tomcat에 push 할 수있는 .war 파일을 가지고 있으며 docker 이미지는 예상대로 작동하고있다.docker에서 mySQL 용 데이터베이스 및 스키마 만들기

그러나 응용 프로그램에는 동일한 도커 이미지에서 mySQL에 대한 데이터베이스가 필요합니다 (여러 이미지를 실행하고 싶지 않으므로 크기가 작고 데모 전용입니다).

tomcat 이미지를 기본으로 사용하고 mySql을 설치합니다. 기본 OS는 우분투입니다. MySQL의 관련 항목없이

#Get the base 
FROM davidcaste/debian-tomcat:tomcat8 

#Add mySql 
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections 
RUN apt-get -y update 
RUN apt-get -y install wget zip gcc 
RUN { \ 
     echo mysql-community-server mysql-community-server/data-dir select ''; \ 
     echo mysql-community-server mysql-community-server/root-pass password ''; \ 
     echo mysql-community-server mysql-community-server/re-root-pass password ''; \ 
     echo mysql-community-server mysql-community-server/remove-test-db select false; \ 
    } | debconf-set-selections \ 
    && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server 

RUN /etc/init.d/mysql start 

RUN wget http://github.com/xxxx/xxxx/blob/master/xxxx/src/main/resources/sql/create-schema.sql 
RUN cp create-schema.sql /usr/ 

RUN wget http://github.com/xxxx/xxxx/blob/master/xxxx/src/main/resources/sql/metadata.sql 
RUN cp metadata.sql /usr/ 


#RUN mysql -- this gives error 
#RUN create database test; -- this gives error 

#Get the Web Application from Nexus 
RUN wget "http://mynexus:8081/nexus/service/local/artifact/maven/redirect?g=org.my&a=my-app&r=repo&e=war&v=LATEST" --content-disposition -O app.war 

#Copy the war file 
RUN cp app.war /opt/tomcat/webapps/ 

EXPOSE 8080 
CMD ["catalina.sh", "run"] 

(데이터베이스 등을 만드는)에 고정 표시기가 작동을 구축하고 그것을 잘 실행 :

여기 내 dockerfile입니다. 하지만 내 스키마 및 메타 데이터 SQL 파일을 사용하여 데이터베이스를 만드는 방법을 이해할 수 없습니다.

답변

2

컨테이너를 시작한 후에 SQL 명령을 실행할 수 있지만 빌드하는 동안은 실행할 수 없습니다. 하나의 옵션은 엔트리 포인트를 오버라이드하고 거기에서 수행하는 것입니다. 또 다른 옵션은 docker-compose가 먼저 일반 mysql 컨테이너를 생성 한 후 bash 스크립트를 실행하는 추가 컨테이너로 db 및 schema를 작성하는 것입니다. 아이디어를 얻으려면 즉 here을 참조하십시오. 또 다른 옵션은 위의 링크에서 답변 중 하나에 묘사 된대로 ENV 설정으로 SQL 관련 항목을 전달하는 것입니다.

+0

Docker Compose에 대한 권장 사항은 내가 사용하는 방법입니다. – nwinkler

관련 문제