2017-03-16 2 views
0

Salut les gars je suis dans cette situation, je voudrais déployer les modifications dans mon code source en reconstruisant le conteneur de données qui contient une commande COPY pour transférer la source dans le volume. Cependant, quand je reconstruis l'image de données et ré-exécute docker-compose je suis resté avec l'ancien code et la seule manière de mettre à jour tout est de supprimer le volume de webroot et de le recréer.Mettre à jour le volume partagé du conteneur de données

Où est l'erreur ??

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: 

Répondre

1

Le volume nommé webroot est destiné à maintenir les données à travers conteneur restart/reconstructions. La seule fois où les données du volume sont mises à jour à partir d'une image, c'est quand le volume est créé et le contenu du répertoire dans l'image est copié.

Il semble que vous vouliez utiliser volumes_from. conteneur pour monter des volumes définis sur data. C'est la méthode originale de "partage de données" du partage de données que les volumes ont été conçus pour remplacer.

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 

Notez que cela a été replaced in version 3 of the compose file de sorte que vous devrez peut-être tenir à recréer le volume si vous voulez utiliser des fonctionnalités plus récentes.

+0

Malheureusement, il n'y a aucun moyen de forcer automatiquement la reconstitution du volume à la composition du docker. Je pense que je vais changer ma version de fichier de composition en 2.1. –