Développement pour Docker. Environnement local. Partie 1

Peut-ĂȘtre que l'une des principales raisons pour lesquelles j'aime Docker est qu'elle Ă©limine la nĂ©cessitĂ© d'installer divers services sur un ordinateur. Il s'agit notamment du serveur Web Apache ou Nginx lui-mĂȘme, des bases de donnĂ©es et d'autres composants de l'infrastructure d'application. L'infrastructure entiĂšre est enregistrĂ©e dans le fichier de configuration docker-compose.yml et est lancĂ©e avec une seule commande avec votre application. Tout ce dont un dĂ©veloppeur travaillant avec un docker a besoin est essentiellement un docker lui-mĂȘme et un environnement de dĂ©veloppement prĂ©fĂ©rĂ© et TOUT!

Pour l'exhaustivité de la narration, vous devez encore dire briÚvement ce qu'est le docker et ses concepts de base.

Le docker doit donc ĂȘtre considĂ©rĂ© comme une sorte de systĂšme de virtualisation et de conteneurisation.
L'un des concepts de base du docker est une image. Une image peut ĂȘtre comparĂ©e Ă  un fichier (peut-ĂȘtre mĂȘme un exĂ©cutable de programme), qui contient des informations. Docker peut lancer l'image. Une image en cours d'exĂ©cution est appelĂ©e un conteneur. Plusieurs conteneurs de la mĂȘme image peuvent ĂȘtre lancĂ©s.

Alors, que contient l'image?

Peut ĂȘtre une image d'un systĂšme d'exploitation. Par exemple, l'image d'ubuntu. Il peut y avoir une image avec une base de donnĂ©es, un serveur web et php et avec presque n'importe quoi. Pour dĂ©marrer cette connaissance nous suffira.

Il est supposĂ© que le lecteur lui-mĂȘme a installĂ© docker et docker-compose.

Nous commençons à déployer notre environnement du plus simple au plus complexe.

Leçon numéro 1. Installation de Nginx


Essayons d'installer uniquement Nginx en premier. Créez docker-compose.yml avec le contenu suivant:

version: '3.0' services: nginx: image: nginx ports: - 80:80 

Ensuite, exécutez la commande docker-compose up -d et ce qui suit devrait apparaßtre en réponse:

 Creating network "lesson1_default" with the default driver Creating lesson1_nginx_1 ... done 

Nous entrons http: // localhost / dans la barre d'adresse du navigateur et le message d'accueil "Bienvenue sur nginx!" Devrait ĂȘtre visible Ă  nos yeux. Si oui, vous ĂȘtes sur la bonne voie.

Que se passe-t-il ici?

Pour comprendre la structure du fichier de composition, je recommande de se rĂ©fĂ©rer Ă  la documentation officielle , bien que ce soit la meilleure source d'informations en anglais. La documentation dĂ©crit toutes les options possibles qui peuvent ĂȘtre utilisĂ©es.

Analysons le fichier présenté:

  • version - Au dĂ©but, la version du fichier de composition est dĂ©clarĂ©e. Au lieu de 3.0, vous pouvez spĂ©cifier 2.0. Moins n'est plus pris en charge. Les options du fichier de composition disponibles pour utilisation dĂ©pendent de la version.
  • services - annonce de services
  • nginx - le nom de notre service, est fixĂ© arbitrairement Ă  sa discrĂ©tion. Dans cet exemple, correspond au nom de l'image.
  • image: nginx - le nom de l'image Ă  utiliser.
  • ports - la directive dĂ©clare la redirection de port. 8080: 80 - cette entrĂ©e signifie que le port ouvert 80 du conteneur correspondra au port 8080 sur la machine hĂŽte sur laquelle le docker s'exĂ©cute. Dans l'exemple du fichier, le port 80 du conteneur est connectĂ© au port 80 de votre ordinateur.

Nous examinerons plus en détail la déclaration d'image, la directive image: nginx.

Le rĂ©fĂ©rentiel principal de toutes les images est le Docker Hub. Il y a de nombreuses images prĂȘtes Ă  l'emploi (vous pouvez collecter les vĂŽtres, mais plus Ă  ce sujet plus tard). L' image nginx dĂ©clarĂ©e en fait partie.

Quant aux ports "forward". Si vous spécifiez une correspondance 80:80, comme dans l'exemple ci-dessus, alors nginx sera disponible sur localhost: 80 ou simplement localhost. Si le port 80 est déjà pris, vous pouvez spécifier 8080: 80. Ensuite, le site sera disponible sur localhost: 8080. Et en conséquence, si vous avez complÚtement oublié de spécifier cette directive ports, le port sera disponible uniquement à l'intérieur du conteneur et nginx ne sera plus accessible via le navigateur.

Le conteneur est en cours d'exécution. Et comment réellement travailler avec lui?

L'installation d'un serveur Web suppose que nous voulons l'utiliser pour recevoir et visualiser les pages html du site. Il y a une question. Comment puis-je transférer des fichiers html vers un conteneur? Les volumes nous aideront

volumes


Apportons notre docker-compose.yml sous la forme suivante:

 version: '3.0' services: nginx: image: nginx ports: - 80:80 volumes: - ./html:/usr/share/nginx/html 

La directive volumes est apparue à partir de la nouvelle, qui indique que le dossier local ./html est monté dans le conteneur à l'adresse / usr / share / nginx / html.

Lors du montage, le dossier à l'adresse spécifiée à l'intérieur du conteneur est remplacé par le dossier de l'ordinateur local.

Pour le faire fonctionner, crĂ©ez le dossier html au mĂȘme niveau que le fichier docker-compose.yml et ajoutez-y le fichier index.html avec du texte libre. Par exemple, Bonjour de Docker!

Et nous recrĂ©ons le conteneur avec la mĂȘme commande docker-compose up -d
Docker recrée le conteneur.

 Recreating lesson1_nginx_1 ... done 

Vérifiez le résultat dans le navigateur. Et nous voyons: Bonjour de Docker! Tout a fonctionné.

Il est important de noter que le dossier monté est disponible pour des modifications en temps réel. C'est-à-dire si nous modifions le texte dans le fichier index.html ou ajoutons un nouveau fichier au dossier, toutes ces modifications seront immédiatement disponibles dans le conteneur. Cette fonction importante vous permet d'effectuer le développement via le docker. Nous modifions sur notre ordinateur les fichiers et dossiers montés, et ils sont immédiatement affichés dans le conteneur Docker.

Partie 2 - Nginx + PHP + MySql + phpMyAdmin

Source: https://habr.com/ru/post/fr459972/


All Articles