2016-11-23 1 views
1

2 개의 도커 컨테이너가 있습니다. 하나는 실행중인 Tomcat이고 다른 하나는 mysql을 실행 중이다. .sql 파일을 mysql 컨테이너의 기존 "docker-entrypoint-initdb.d"폴더에 복사하고 싶습니다. 두 컨테이너가 시작되면 내가 폴더를 "고정 표시기 - 엔트리 포인트-initdb.d는"내 바람둥이 컨테이너와 test.sql을 만든 것을보고Dockerfile 오른쪽 컨테이너에 파일 복사

COPY test.sql /docker-entrypoint-initdb.d 

:

나는 나의 Dockerfile에서 다음 명령을 사용하여 그것으로 복사되었습니다. 파일이 필요한 곳에 복사되지 않습니다. test.sql은 mysql 컨테이너로 복사되지 않았습니다.

어떻게해야합니까?

고정 표시기-compose.xml :

version: "2" 

services: 
    db: 
     image: mysql 
     environment: 
      - MYSQL_ALLOW_EMPTY_PASSWORD="true" 

    myapp: 
     build: ./myapp 
     ports: 
      - 8080:8080 
      - 3306:3306 
+1

컨테이너 용 별도의 도커 파일이 있습니까? –

+0

아니요. 나는 그것을 하나하고 있습니다. 나는 도커 - 작성 구조를 사용한다. – PrestigeDev

+0

도커가 yaml 파일을 작성하시기 바랍니다. –

답변

3

을이 같은 Dockerfile와 데이터베이스 컨테이너에 대한 자신의 이미지를 구축 :

FROM mysql 
COPY test.sql /docker-entrypoint-initdb.d 
2

당신은 tomcat 컨테이너를 구축,하지만 파일이 tomcat 컨테이너에 복사 이유가 그게 전부를 Mysql 이미지를 사용하고 있습니다.

컨테이너가 올라간 경우 docker cp 파일을 수동으로 원하는 위치로 옮길 수 있습니다.

시작할 때 컨테이너에서 데이터베이스를 사용할 수있게하려면 더미 파일 시스템에 더미 컨테이너를 사용하는 것이 좋습니다. 그런 다음 해당 컨테이너에서 데이터베이스를 수동으로 복원하십시오.

version: "2" 

services: 
    db: 
     image: mysql 
     environment: 
      - MYSQL_ALLOW_EMPTY_PASSWORD="true" 
     volumes: 
      - /my/own/datadir:/var/lib/mysql 

    myapp: 
     build: ./myapp 
     ports: 
      - 8080:8080 
      - 3306:3306 

또 다른 방법은 사용하여 자신의 이미지를 만드는 것입니다 것은 dockerfile 다음과 같습니다 : 그런 용기를 제거하고 같은 dockerfile 수정

FROM mysql 
COPY test.sql /docker-entrypoint-initdb.d 
+0

docker cp에 대해 알고 있지만 시작하기 전에 파일을 복사해야합니다. (그리고 나는 매번 시작할 때마다 그것을 복사하고 싶지 않다) 그래서 내 문제를 해결하기 위해 무엇을 구체적으로 할 수 있습니까? – PrestigeDev

2

Tomcat 컨테이너 MySQL의 용기 (DB)로 고정 표시기 이미지 이름 "MySQL을"통해 구축 고정 표시기 인 파일로 작성된다.

현재 폴더 (호스트)가있는 볼륨을 컨테이너 내부의 "/docker-entrypoint-initdb.d"에 마운트 할 수 있습니다.

새로운 docker-compose.yml은 다음과 같습니다.

version: "2" 

services: 
    db: 
    image: mysql 
    environment: 
     - MYSQL_ALLOW_EMPTY_PASSWORD="true" 

    volumes: 
     - .:/docker-entrypoint-initdb.d 
myapp: 
    build: ./myapp 
    ports: 
     - 8080:8080 
     - 3306:3306