Plusieurs Dockerfiles en projet
Comment vous organisez-vous les Dockerfiles appartenant à un projet lorsque vous avez un Dockerfile pour la base de données, une pour le serveur d'applications, et ainsi de suite? Voulez-vous créer une sorte de hiérarchie dans la source?
Un projet de grande entreprise ne peut pas se composer uniquement d'un Dockerfile?
- vous pouvez modifier la accepté de répondre à
Vous devez vous connecter pour publier un commentaire.
Note De L'Auteur
Cette réponse est hors de date. Fig n'existe plus et a été remplacé par Docker composer.
Réponse originale à cette question
Je viens de créer un répertoire contenant un Dockerfile pour chaque composant. Exemple:
Lors de la construction des conteneurs, juste donner le nom du répertoire et le Panneau sera de choisir le bon Dockerfile.
Dans les versions plus récentes(>=1.8.0) de docker, vous pouvez le faire
Un big enregistrer.
EDIT: mise à jour des versions par raksja commentaire
Dockerfile.web
comme une configuration d'exécution. J'ai donc créé un problème: youtrack.jetbrains.com/issue/WEB-28185docker-compose.yml
fichier, par exemple?dockerfile: Dockerfile-alternate
à l'intérieur de labuild
la section de votre conteneur.Utilisation
docker-ecrire
et plusieursDockerfile
dans des répertoires distinctsComme Kingsley Uchnor dit, vous pouvez avoir plusieurs
Dockerfile
, un par répertoire, qui représentent quelque chose que vous voulez construire.J'aime avoir un
docker
dossier qui détient chacune des applications et de leur configuration. Voici un exemple de projet de la hiérarchie de dossiers pour une application web qui a une base de données.docker-compose.yml
exemple:docker-compose
de ligne de commande exemple d'utilisation:Dans le cas où vous avez besoin des fichiers à partir de précédents dossiers lors de la construction de votre Dockerfile
Vous pouvez toujours utiliser la solution ci-dessus et placez votre
Dockerfile
dans un répertoire tel quedocker/web/Dockerfile
, tous vous avez besoin est de définir la construirecontext
dans votredocker-compose.yml
comme ceci:De cette façon, vous serez en mesure d'avoir des choses comme ceci:
et un
./docker/web/Dockerfile
comme ceci:Voici quelques commandes à partir de tldr docker-composer. Assurez-vous que vous vous référez à la documentation officielle pour plus de détails.
COPY ../package.json /app/package.json
)? Ce fichier sera généralement au niveau de la racine et docker a interdit l'accès à la société mère. La démarche que vous suivez?web
projet de.
(endocker-compose.yml
:build: .
). De cette façon,web
a accès à la racine des fichiers lors de la construction. J'ai vu cette question: stackoverflow.com/questions/24537340/... et on peut construire à partir du répertoire parent au lieu de cela lors de l'utilisation dedocker
ligne de commande, et cette réponse montre comment le faire avec docker-composer: stackoverflow.com/a/45353241/1092815.
commecontext
dans lebuild
option afin que je puisse accéder à ces fichiers à la racine. Merci @GabLeRoux-f
option est bien, mais je préfère utiliserdocker-compose
avec des sous-dossiers. Je pense que les deux réponses sont valables. La plupart des gens préfèrent simplement pour garder la valeur par défautDockerfile
nom à l'appui de la plupart des IDEs hors de la boîte. Je ne suis pas d'invalider la première réponse, je suis en fournissant une solution de rechange. Je n'aime pas mon IDE de penser que mon Dockerfile est unphp
fichier lorsque j'utiliseDockerfile.php
, mais oui, il fonctionne. J'ai vu quelques exemples dans le panneau de la documentation;Dockerfile.build
,Dockerfile.debug
, etc.example.Dockerfile
garde de la syntaxe et des icônes sur VSCode.Ajouter une couche d'abstraction, par exemple un fichier YAML, comme dans ce projet https://github.com/larytet/dockerfile-generator qui ressemble
centos7:
base: centos:centos7
packager: rpm
install:
- $build_essential_centos
- rpm-build
run:
- $get_release
env:
- $environment_vars
Un court script Python/faire peut générer tous les Dockerfiles à partir du fichier de configuration
À l'Ide, j'simple changer le nom du panneau fichiers *.Dockerfile, et associé au type de fichier *.Dockerfile de docker syntaxe.
Lorsque vous travaillez sur un projet qui nécessite l'utilisation de plusieurs dockerfiles, il suffit de créer chaque dockerfile dans un répertoire séparé. Par exemple,
app/
db/
Chacun de ces répertoires contiennent leurs dockerfile. Lorsqu'une application est en cours de construction, docker va rechercher tous les répertoires et construire tous les dockerfiles.