Construire une application multi-container avec Docker Compose
en créant une application multi-container avec Docker Compose implique la définition des services de votre application dans une docker-compositeur.yml
. Ce fichier spécifie les images à utiliser pour chaque service, les ports à exposer, les volumes à monter et la configuration de mise en réseau. Illustrons avec un exemple simple d'une application Web avec une base de données distincte:
Tout d'abord, créez un fichier docker-compose.yml
:
<code class="yaml"> version: & quot; 3.9 & quot; Services: Web: build: Context: ./web dockerfile: Dockerfile Ports: - & quot; 8080: 80 & quot; Deprend_on: - DB DB: Image: Postgres: 13 ports: - & quot; 5432: 5432 & quot; Environnement: - postgres_user = myuser - Postgres_password = mypassword </code>
Ceci définit deux services: web
et db
. Le service web
est construit à partir d'un dockerfile situé dans le répertoire ./ web
. Il expose le port 8080 sur la machine hôte, mappant au port 80 dans le conteneur. Surtout, Defend_on: - DB
garantit que la base de données commence avant l'application Web. Le service db
utilise une image postgresql prédéfinie et expose le port 5432. N'oubliez pas de créer le répertoire ./ web
et un dockerfile
à l'intérieur (par exemple, un simple à partir de Nginx
pour un serveur Web de base).
Pour créer et exécuter l'application, naviguer sur le direcil docker-compose.yml
et exécuter:
<code class="bash"> docker-compose up -d --build </code>
le -d
Flag exécute les conteneurs en mode détaché (arrière-plan). Le - Build
Flag construit l'image du service web
si nécessaire. Vous pouvez ensuite arrêter et supprimer les conteneurs à l'aide:
<code class="bash"> docker-compose down </code>
Cela fournit un cadre de base. Des applications plus complexes peuvent impliquer plusieurs services avec des dépendances et des configurations complexes, nécessitant des spécifications plus détaillées dans le fichier docker-compose.yml
. N'oubliez pas de gérer en toute sécurité les variables d'environnement, en utilisant potentiellement .env
Solutions de gestion des fichiers ou secrets pour les environnements de production.
Applications:
docker-compose.yml
définit toute l'infrastructure de l'application, rendant le déploiement et la réplication directement. Cela élimine la nécessité de gérer plusieurs commandes Docker individuellement. docker-ccompose.yml
. Cela facilite l'intégration avec des outils d'orchestration comme Kubernetes plus tard. docker-compose.yml
sert de source unique de vérité. Communication et partage des données inter-container
Docker Compose facilite la communication inter-container et le partage des données via plusieurs mécanismes:
web
peut accéder au conteneur db
à l'aide du nom d'hôte db
. Cela se fait généralement via des variables d'environnement ou des fichiers de configuration dans le code d'application. docker-compose.yml
et monté dans plusieurs conteneurs. Ceci est idéal pour partager des fichiers de configuration, des bases de données ou d'autres données persistantes. Par exemple: <code class="yaml"> version: & quot; 3.9 & quot; Services: Web: # ... Volumes: - Shared_Data: / App / Data DB: # ... Volumes: - Shared_data: / var / lib / postgresql / Data Volumes: Shared_data: </code> Pre> <p> Cela crée un volume nommé <code> Services. </code></p>
docker-compose.yml
et configurez vos applications pour communiquer via elle. Le choix de la méthode dépend des besoins spécifiques de votre application. Pour des configurations simples, des variables d'environnement ou une communication réseau directe peuvent suffire. Pour des scénarios plus complexes impliquant des données persistantes ou des communications asynchrones, les volumes et les files d'attente de messages sont plus appropriés.
docker-compose.yml
: Assurez-vous que la configuration est correcte, y compris les mappages de port, les dépendances, les volumes et les variables d'environnement. Une seule faute de frappe peut entraîner des problèmes importants. Docker-Composer Logs & lt; service_name & gt;
pour afficher les journaux de conteneurs individuels. Les journaux révèlent souvent la cause profonde des erreurs. docker-compose PS
pour vérifier l'état de vos conteneurs. Identifiez tous les conteneurs qui ne sont pas en cours d'exécution ou qui ont été sortis avec un code d'erreur. ping
ou d'autres outils de diagnostic réseau à partir des conteneurs à l'aide de la ressource docker fonction correctement. L'épuisement des ressources peut conduire à un comportement inattendu.
docker-compose restart & lt; service_name & gt;
ou docker-compose up --build -d
. docker-compose up --buil -d
. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!