Ce que les débutants de Docker ont fait avant de configurer l'environnement d'apprentissage nginx

Quoi écrire dans cet article

En tant qu'ingénieur front-end, je pensais que je devrais avoir une compréhension non seulement du codage mais aussi des serveurs Web, donc je voulais étudier en jouant avec nginx. Cependant, j'étais réticent à installer un serveur Web sur mon ordinateur Mac et à modifier les paramètres, j'ai donc décidé de profiter de cette opportunité pour démarrer avec Docker. Tout en apprenant les bases de Docker, j'enregistre ce que j'ai fait lors de la création de l'environnement d'apprentissage pour nginx.

Inscrivez-vous sur le site officiel de téléchargement Docker

Téléchargez et installez Docker Desktop à partir de [Docker Official Get Started] 3. Il n'y a rien de particulièrement difficile.

Tutoriel Docker réalisé

Lorsque j'ai démarré le Docker téléchargé, l'écran du didacticiel a commencé. Docker_tutorial.png

Vous pouvez même cloner le référentiel du didacticiel, créer une image docker et la partager sur le hub docker. Lorsque vous appuyez sur le bouton bleu avec la commande écrite dessus, elle sera exécutée sur la console sur le côté droit de l'écran. Si j'appuie dessus sans le savoir, j'ai commencé à cloner le référentiel dans le répertoire Home, je dois le nettoyer plus tard.

Il faut moins de 5 minutes pour terminer. Lisez un petit commentaire et appuyez 4 fois sur le bouton pour terminer. Cependant, on en sait encore peu sur Docker.

Lire le docker / démarrer

Quand je pensais que le tutoriel était terminé, le conteneur lui-même était un document. Le conteneur docker-tutorial est en cours d'exécution et est accessible à l'adresse http: // localhost.

Je vais le lire car il est écrit de différentes manières スクリーンショット 2020-08-24 13.25.51.png

J'ai trouvé que c'était un peu gênant car il y avait une certaine quantité de texte, mais il contient des informations assez utiles. Il y a aussi des éléments qui génèrent intentionnellement une erreur et vous indiquent comment y faire face, et cela vous apprend également comment résoudre les problèmes dans lesquels les débutants ont tendance à tomber, alors lisons-le dès le début sans aucun tracas.

Ce que vous pouvez apprendre de la mise en route

--Comment démarrer / arrêter le conteneur

J'ai tout lu correctement et j'ai passé deux jours de congé, mais cela valait la peine d'être lu. Nous vous recommandons de ne pas simplement le lire, mais de continuer tout en exécutant réellement la commande.

Créer un environnement d'apprentissage nginx

Maintenant que nous avons terminé la mise en route, nous sommes prêts à passer à l'action.

Déposer l'image de nginx

Téléchargez l'image de [nginx] 1 depuis Docker Hub Il y a une commande de lancement rapide au bas de la page d'image nginx. Puisque la partie / some / content devient le soi-disant hthome, créez un répertoire approprié et remplacez / some / content par ce chemin à tester. Exécutez la commande suivante avec l'option -p et 8080: 80 ajoutés à associer au port de la machine hôte.

docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -dp 8080:80 nginx

Lorsque je lance le navigateur et que j'accède à http: // localhost: 8080, cela devient 403 Forbidden, mais je peux confirmer que nginx peut être démarré avec succès. 403 sera résolu plus tard.

Lancer depuis docker-compose

Il est difficile de taper une commande longue comme celle ci-dessus à chaque fois, et à l'avenir je souhaite créer un lien avec d'autres conteneurs, je vais donc permettre de partir de docker-compose. Créez un répertoire PJ avec la structure suivante

ProjectRoot/ ┣ docker-compose.yml ┗ static-html-directory/

Écrivez docker-compose.yml en vous souvenant du contenu de la mise en route

version: "1.0"

services:
  nginx:
    image: nginx
    ports: 
      - "8080:80"
    volumes:
      - ./static-html-directory:/usr/share/nginx/html

Ensuite, lorsque vous appuyez sur docker-compose up, l'erreur suivante se produit

ERROR: Version "1.0" in "./docker-compose.yml" is invalid.

Je pensais que la version était la version de mon système et je l'ai réglée sur 1.0, mais quand je me suis souvenu que c'était la version de schéma de docker-compose au démarrage et que j'ai réécrit la version 3.8, le démarrage s'est terminé avec succès.

Lorsque je lance le navigateur et que j'accède à http: // localhost: 8080, il redevient 403 Interdit et l'erreur suivante s'affiche sur la console.

nginx_1  | 2020/08/27 06:59:58 [error] 23#23: *5 directory index of "/usr/share/nginx/html/" is forbidden, client: 172.20.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost:8080"

Puisque / usr / share / nginx est la zone Bind Mounted to ./static-html-directory, vérifiez les permissions du répertoire static-html.

kontam> ls -l
total 16
-rw-r--r--  1 kontam  staff  150  8 27 16:48 docker-compose.yml
drwxr-xr-x  3 kontam  staff   96  8 27 15:56 static-html-directory

Tous les utilisateurs ont l'autorisation de lecture, il ne semble donc y avoir aucun problème. J'ai pensé, j'ai nommé le fichier suivant test.html et je l'ai stocké sous le répertoire static-html-directory.

<html>
  <body>
    <h1>kontam added this</h1>
  </body>
</html>

Après cela, lorsque j'accède à http: //localhost:8080/test.html avec un navigateur, le HTML est renvoyé avec succès et "kontam a ajouté ceci" s'affiche. Puisqu'il n'y avait pas d'index.html sous le répertoire static-html-directory, la liste des fichiers sera affichée lors de l'accès à la racine, mais il semble qu'elle était 403 car la liste est désactivée par défaut.

Connectez-vous au conteneur nginx et entraînez-vous à modifier les paramètres

J'ai décidé de modifier le paramètre pour autoriser l'affichage de cette liste de fichiers dans le but d'apprendre nginx. À la suite de Google, le fichier de configuration de base de nginx est /etc/nginx/nginx.conf. Ouvrons immédiatement le fichier de configuration avec vim.

root@d46b1cf2dadf:/etc/nginx# vim /etc/nginx/nginx.conf
bash: vim: command not found

Il n'y a pas de vim ...? Si vous ne l'avez pas, vous n'avez pas d'autre choix que de le mettre. J'ai découvert qu'il s'agissait d'un système debian avec debian_version sous / etc, alors installez-le avec apt-get.

apt-get update
apt-get install vim

Vous pouvez désormais utiliser Vim en toute sécurité.

Modifier les paramètres dans nginx.conf

Vous pouvez découvrir comment spécifier le paramètre autoindex, qui est une liste de fichiers, en consultant [document officiel nginx] 4. Pour permettre à nginx d'afficher la liste des fichiers, spécifiez l'index automatique activé dans le bloc d'emplacement du fichier de paramètres. Quand j'ai ouvert nginx.conf avec vim, il y avait une description comme celle-ci dans le bloc http.

http {
    ...
    include /etc/nginx/conf.d/*.conf;
}

Inclut d'autres fichiers de configuration. Le bloc serveur n'est-il pas là? J'essaierai de le trouver. Il existe un fichier de paramètres appelé default.conf sous /etc/nginx/conf.d, alors ouvrez-le. Ensuite, comme je m'y attendais, le bloc serveur entier a été écrit ici, et la spécification de chemin de hthome a également été écrite. Ajoutez la ligne suivante ici

autoindex on;

Cela redémarre le conteneur nginx

docker-compose down
docker-compose up

Lorsque j'ai essayé à nouveau d'accéder à http: // localhost: 3000, la liste des fichiers était affichée comme je m'y attendais. スクリーンショット 2020-08-27 18.06.58.png

On peut dire que l'environnement d'apprentissage a été configuré pour que vous puissiez vérifier en toute sécurité les modifications tout en jouant avec les paramètres nginx.

Gérer les fichiers de configuration en dehors du conteneur avec les montages de liaison

L'environnement d'apprentissage pour nginx a été créé, mais si vous réécrivez simplement le fichier de paramètres dans le conteneur, tous les paramètres seront renvoyés lorsque vous recréez le conteneur. Si vous apprenez avec l'intention de le casser, c'est pratique car il peut être jeté, mais dans la pratique, comme la construction d'un système, lorsque le conteneur se brise, tout le travail jusqu'à ce point peut être perdu et il est difficile de gérer git. Je pense que le fichier de configuration devrait être gérable sur le système de fichiers de la machine hôte.

J'ai créé un répertoire nginx pour stocker les fichiers de configuration nginx et y ai stocké une copie de chaque fichier de configuration. Le répertoire PJ a la structure suivante.

ProjectRoot/ ┣ docker-compose.yml ┣ static-html-directory/  ┗ test.html ┗ nginx/  ┣ nginx.conf  ┗ conf.d/   ┗ default.conf

Si vous spécifiez ce répertoire nginx comme volume, les paramètres modifiés peuvent être conservés même si le conteneur est recréé. Ajoutez la partie volumes de docker-compose.yml.

version: "3.8"

services:
  nginx:
    image: nginx
    ports: 
      - "8080:80"
    volumes:
      - ./static-html-directory:/usr/share/nginx/html
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf

Puisqu'il fait référence à la configuration de la machine hôte, c'est facile car vous n'avez pas à vous connecter au conteneur docker chaque fois que vous modifiez les paramètres. Après cela, vous pouvez continuer à étudier tout en modifiant ou en cassant les paramètres à votre guise.

Sommaire

c'est tout. Si vous avez des erreurs ou des points à améliorer, veuillez commenter.

Recommended Posts

Ce que les débutants de Docker ont fait avant de configurer l'environnement d'apprentissage nginx
Ce que les débutants du développement Android ont fait avant de publier l'application dans 2 semaines
Environnement Docker Module Nuxt axios pour définir baseURL
Ce que j'ai fait lorsque la base de données n'a pas démarré avec docker-compose up
Configurer un environnement Wordpress Docker sans utiliser l'image Worpdress
Construction d'environnement avec Docker pour les débutants