2017-03-16 5 views
0

안녕하세요, 저는이 상황에 있습니다. 볼륨의 소스를 전송하기위한 COPY 명령이 포함 된 데이터 컨테이너를 다시 작성하여 내 소스 코드에 변경 사항을 배포하고 싶습니다. 그러나 내가 데이터 이미지를 재구성하고 docker-compose를 다시 실행하면 이전 코드로 인해 막혔지만 모든 것을 업데이트하는 유일한 방법은 웹 루트 볼륨을 제거하고 다시 생성하는 것입니다.데이터 컨테이너에서 공유 볼륨 업데이트

어디서 실수입니까 ??

server: 
    build: ./docker/apache 
    image: server:1.3.16 
    restart: always 
    links: 
    - fpm 
    ports: 
    - 80:80 # HTTP 
    - 443:443 # HTTPS 
    volumes: 
    - webroot:/var/www/html:ro 

fpm: 
    build: ./docker/php 
    image: fpm:1.0 
    restart: always 
    links: 
    - database 
    volumes: 
    - webroot:/var/www/html 

data: 
    build: 
    context: . 
    dockerfile: dataDockerFile 
    image: smanapp/data:1.0.0 
    volumes: 
    - webroot:/var/www/html 

volumes: 
    webroot: 

답변

1

명명 된 볼륨 webroot이 컨테이너를 다시 시작에서 데이터를 유지하기위한 것입니다/다시 작성합니다. 볼륨의 데이터가 이미지에서 업데이트되는 유일한시기는 볼륨이 생성되고 이미지의 디렉토리 내용이 복사되는 경우입니다.

volumes_from은 다음과 같이 사용하는 것으로 보입니다. 컨테이너는 data에 정의 된 볼륨을 마운트합니다. 이것은 볼륨이 대체하도록 설계된 데이터를 공유하는 원래의 "데이터 컨테이너"방법입니다.

version: "2.1" 

services: 

    server: 
    image: busybox 
    volumes_from: 
     - data 
    command: ls -l /var/www/html 

    fpm: 
    image: busybox 
    volumes_from: 
     - data 
    command: ls -l /var/www/html 

    data: 
    build: . 
    image: dply/data 
    volumes: 
     - /var/www/html 

참고이 replaced in version 3 of the compose file을하고있다 너무 당신은 당신이 새로운 기능을 사용하려면 볼륨을 다시 고수해야 할 수도 있습니다.

+0

불행히도 도커에서 볼륨을 다시 만들도록 자동으로 강제 할 수는 없습니다. 내 작성 파일 버전을 2.1로 다시 바꿀 것 같아. –