5 Exemples de compose Docker

5 Exemples de compose Docker
Docker Compose est un moyen efficace et facile de déployer des conteneurs Docker sur un hôte. Compose prend un fichier yaml et crée des conteneurs en fonction de ses spécifications. La spécification comprend les images nécessaires pour être déployées, quels ports spécifiques sont nécessaires pour être exposés, volumes, CPU et limites d'utilisation de la mémoire, etc.

C'est un moyen facile de configurer le déploiement automatisé d'applications avec un frontend, une base de données et quelques mots de passe et des clés d'accès jetées pour faire bonne mesure. Chaque fois que vous exécutez Docker-Compose de l'intérieur d'un répertoire qui contient un compose Docker.yml il passe par le fichier et déploie votre application comme spécifié.

Pour vous aider à écrire votre propre docker-compose.yml voici 5 extraits Yaml simples et, espérons-le, que vous pouvez mélanger et assortir.

1. Proxy inversé nginx

L'application la plus courante à déployer probablement en tant que conteneur docker est nginx. Nginx peut servir de serveur proxy inversé et de point de terminaison SSL pour vos applications Web. Différents systèmes de gestion de contenu comme Ghost et WordPress peuvent être hébergés derrière un seul serveur proxy inversé NGINX et il est donc logique d'avoir un extrait de serveur Nginx à portée de main. La première chose dont vous auriez besoin est un fichier de configuration Nginx. Si vous choisissez de ne pas en créer un, le serveur HTTP par défaut est ce que vous obtiendrez.

Par exemple, je créerais un dossier de configuration nginx dans mon dossier à domicile. Le fichier de configuration nginx.Conf sera présent à l'intérieur de ce dossier, ainsi que d'autres répertoires de fichiers que Nginx attendrait sur / etc / nginx. Cela comprend des certificats et des clés SSL, et des noms d'hôtes pour les serveurs backend où le trafic doit être transmis.

Ce dossier peut ensuite être monté dans le conteneur Nginx à / etc / nginx (avec une autorisation en lecture seule si vous préférez des précautions supplémentaires) et que vous pouvez exécuter le serveur en tant que conteneur, mais vous pouvez le configurer localement à partir de votre répertoire personnel sans avoir à vous connecter dans le conteneur.

Ceci est un échantillon:

Version: '3'
prestations de service:
nginx:
Image: Nginx: Dernière
Volumes:
- / home / user / nginx-configuration: / etc / nginx
PORTS:
- 80:80
- 443: 443

Blog fantôme

Ghost est un CMS écrit principalement dans le nœud.JS et est simpliste, rapide et élégant dans la conception. Il s'appuie sur Nginx pour acheminer le trafic vers elle et utilise MariADB ou parfois SQLite pour stocker des données. Vous pouvez déployer une image Docker rapide et sale pour Ghost en utilisant un extrait simple comme indiqué ci-dessous:

Version: '3'
prestations de service:
fantôme:
Image: Ghost: Dernière
PORTS:
- 2368: 2368
Volumes:
- fantôme-data: / var / lib / fantôme / contenu /
Volumes:
Data fantôme:

Cela crée un nouveau volume et le monte à l'intérieur du conteneur pour stocker le contenu du site Web avec persistance. Vous pouvez ajouter le service proxy Nginx Reverse précédent à ce fichier de composition et avoir un blog fantôme de qualité de production en cours d'exécution en matière de minutes, à condition que vous ayez configuré Nginx pour acheminer le trafic pertinent du port 80 ou 443 au port 2368 sur le fantôme récipient.

Mariadb

MariaDB est un logiciel assez utile pour ne pas être disponible lors de l'appel de votre serveur sur votre serveur. Cependant, les bases de données créent de nombreux journaux, les données réelles ont tendance à se propager partout et à configurer des serveurs de base de données et / ou des clients ne se déroule jamais bien. Le fichier Docker-Compose soigneusement conçu peut atténuer certains des problèmes en essayant de stocker toutes les données pertinentes dans un seul volume Docker, tandis que la base de données logiciel Et ses complexités sont cachées dans le conteneur A:

Version: '3'
prestations de service:
MyDB:
Image: Mariadb
environnement:
- Mysql_root_password = my-secret-pw

Vous pouvez créer un nouveau conteneur de base de données pour chaque nouvelle application, au lieu de créer plus d'utilisateurs dans la même base de données, de configurer des privilèges et de passer par un Rigmarole douloureux pour garantir que chaque application et utilisateur reste sur son propre gazon. Vous n'aurez pas non plus à ouvrir les ports sur le système hôte, car le conteneur de la base de données s'exécutera sur son propre réseau isolé et vous pouvez l'avoir afin que seule votre application puisse faire partie de ce réseau et donc accéder à la base de données.

Pile WordPress

Un point culminant de toutes les différentes parties, de l'utilisation des variables d'environnement à l'exécution d'un serveur Web Frontend et d'une base de données backend peut être combinée dans un fichier Docker-Compose pour un site Web WordPress, comme indiqué ci-dessous:

Version: '3.3 '
prestations de service:
DB:
Image: Mysql: 5.7
Volumes:
- db_data: / var / lib / mysql
redémarrer: toujours
environnement:
Mysql_root_password: SomewordPress
Mysql_database: wordpress
Mysql_user: wordpress
Mysql_password: wordpress
WordPress:
dépend de:
- db
Image: WordPress: Dernière
PORTS:
- "8000: 80"
redémarrer: toujours
environnement:
Wordpress_db_host: db: 3306
Wordpress_db_user: wordpress
Wordpress_db_password: wordpress
Volumes:
db_data:

Ceci est l'exemple le plus populaire et est également mentionné dans la documentation officielle de la composition Docker-Compose. Il y a de fortes chances que vous ne déployiez pas WordPress, mais le fichier de composition ici peut toujours servir de référence rapide pour des piles d'applications similaires.

Docker-compose avec dockerfiles

Jusqu'à présent, nous n'avons traité qu'avec le côté de déploiement pur de Docker-Compose. Mais il y a de fortes chances que vous utilisiez la composition non seulement pour déployer mais développer, tester et alors Déployer les demandes. Que ce soit sur votre poste de travail local ou sur un serveur CD / CI dédié, Docker-Compose peut créer une image en utilisant le DockerFile présent à la racine du référentiel concernant votre application ou une partie de l'application:

Version: '3'
prestations de service:
l'extrémité avant:
construire: ./ code frontal
back-end:
Image: Mariadb

Vous aurez remarqué que pendant que le service backend utilise une image préexistante de MariaDB, l'image frontale est d'abord construite à partir du dockerfile situé à l'intérieur ./ Répertoire du code frontal.

Blocs LEGO de la composition docker

La fonctionnalité entière de Docker-Compose est assez facile à saisir si seulement nous nous demandons d'abord ce que nous essayons de construire. Après quelques fautes de frappe et échoué, vous vous retrouverez avec un ensemble d'extraits qui fonctionnent parfaitement et pourront être assemblés comme des blocs de construction Lego pour définir votre déploiement d'application.

J'espère que quelques exemples ci-dessus vous donneront une bonne longueur d'avance avec ça. Vous pouvez trouver la référence complète pour écrire un fichier composé ici.