请问这是必须的么,如果是这样的话,是要用docker compose-up 自动简化这个过程?
如果不是必须的话,因为我的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"]
Tout d'abord, le répertoire représenté par workdir est le répertoire dans le conteneur, pas l'hôte.
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
docker-compose prend en charge la reconstruction de l'image pendant le fonctionnement
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.
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 ?