Maison  >  Questions et réponses  >  le corps du texte

flask - 为什么每次当我workdir所对应的文件的内容发生变化,要重新build images,然后生成container才会生效

dockerfile没有改变,只是workdir所对应的容器外部的文件发生了改变

  1. 请问这是必须的么,如果是这样的话,是要用docker compose-up 自动简化这个过程?

  2. 如果不是必须的话,因为我的dockerfile的问题么?
    dockerfile如下:

    FROM ubuntu
    MAINTAINER Tarty.Phoenix <tartyphoenix@gmail.com>
    RUN apt-get update
    RUN apt-get install -y -q python-all python-pip libffi-dev
    RUN apt-get install -y -q python-dev build-essential
    ADD ./flask_pure/requirements.txt /tmp/requirements.txt
    RUN pip install -qr /tmp/requirements.txt
    
    ADD ./flask_pure /opt/flask_pure/
    WORKDIR /opt/flask_pure
    
    EXPOSE 80
    CMD ["python", "manage.py", "runserver"]
大家讲道理大家讲道理2707 Il y a quelques jours492

répondre à tous(3)je répondrai

  • 巴扎黑

    巴扎黑2017-04-24 09:12:59

    1. Tout d'abord, le répertoire représenté par workdir est le répertoire dans le conteneur, pas l'hôte.

    2. Les modifications de contenu suivantes nécessitent la reconstruction de l'image

      • Dockerfile lui-même change

      • Modifications du fichier source pour les instructions COPIER/AJOUTER

    3. docker-compose prend en charge la reconstruction de l'image pendant le fonctionnement

      service:
          - build: <image_base_dir>

    répondre
    0
  • 怪我咯

    怪我咯2017-04-24 09:12:59

    Il y a un point dans votre question que je dois vous expliquer.
    Après avoir créé et modifié le fichier docker, build crée une image (miroir), puis exécute une image pour générer un conteneur (conteneur). Ensuite, l'image et le conteneur ont une correspondance individuelle. Ensuite, lorsque vous modifiez le fichier docker et modifiez le répertoire de travail, le conteneur que vous créez entrera bien sûr dans le nouveau répertoire de travail par défaut. Par conséquent, le titre de votre question ne doit pas décrire une question, mais une description logique correcte.

    répondre
    0
  • 迷茫

    迷茫2017-04-24 09:12:59

    Votre compréhension de Docker est fausse. Ce que vous faites, c'est simplement regrouper le contenu d'un certain dossier dans une image.
    Il est recommandé de comprendre le concept de volume VOLUME dans docker. Ce n'est qu'en spécifiant le paramètre -v lors du démarrage du conteneur ou en spécifiant le paramètre VOLUME dans docker-compose.yml que le conteneur peut monter un répertoire local.

    Alors, comment distinguer si le conteneur doit être monté dans le répertoire local, d'après ce que je comprends, s'il est en statut de développement ou en production ?
    Si vous êtes en phase de développement et que le code doit changer fréquemment, il est difficile d'accepter qu'à chaque fois que le code est modifié, il doive être reconditionné dans l'image.
    Si vous êtes en production, imaginez qu'il y a autant d'images sur Docker Hub. Si ces images vous fournissent un environnement d'installation et un code source, vous devez alors spécifier manuellement le VOLUME pour monter le répertoire de code source, puis. start Le conteneur sera compilé et installé. Que pensez-vous de cette expérience ?

    répondre
    0
  • Annulerrépondre