Peut-être que ça marche! Affichez les pages HTML de nginx avec Docker!

introduction

Cet article décrit comment démarrer avec Dockerfile et commencer avec docker-compose jusqu'à ce que le fichier HTML s'affiche avec nginx. Puisqu'il s'agit d'un débutant, je vous serais reconnaissant si vous pouviez signaler des erreurs.

environnement

macOS Catalina version 10.15.6 Docker version 19.03.13 Visual Studio Code version 1.42.1

Conditions préalables

Vous avez installé Docker. Si vous ne l'avez pas installé, veuillez l'installer en vous référant au lien ci-dessous. Peut-être que ça marche! Commençons avec Docker!

Méthode utilisant Dockerfile

Commencez par la méthode de base en utilisant Dockerfile.

Structure des dossiers

La structure des dossiers est la suivante.

Structure des dossiers


root/
├── Dockerfile
├── conf
│   └── default.conf
└── src
    ├── css
    │   └── topPage.css
    ├── js
    │   └── topPage.js
    ├── nextPage.html
    └── topPage.html

Chaque dossier

Chaque fichier est comme suit.

Dockerfile


FROM nginx:latest

ADD ./conf/default.conf /etc/nginx/conf.d/default.conf
ADD ./src /usr/share/nginx/html

RUN echo "start nginx"

/conf/default.conf


server {
        listen 80;
        listen 443;
        server_name localhost;

        root /usr/share/nginx/html;
        index topPage.html topPage.html;

        location / {
                try_files $uri $uri/ /src/index.html$query_string;
        }

        error_page   500 502 503 504  /50x.html;
                 location = /50x.html {
                   root   /usr/share/nginx/html;
        }
}

default.conf est le fichier de configuration utilisé par nginx. Je n'entrerai pas dans les détails dans cet article.

/src/topPage.html


<html>
  <meta charset="utf-8" />
  <link rel="stylesheet" href="./css/topPage.css">
  <script src="./js/topPage.js"></script>
  <body>
    <h1 style="color:red;">Hello Enginx with Docker!!</h1>
    <a href="./nextPage.html">next</a>
  </br>
  <p>css!</p>
  <button type="button" onclick="execute()">Courir!!!
  </button>
  <div id="output"></div>
  </body>
</html>

html:src.nextPage.html


<html>
<body>
  <h1>nextPage!</h1>
  <a href="./topPage.html">back</a>
</body>
</html>

CSS et JavaScript sont créés de manière appropriée pour vérifier s'ils fonctionnent.

/src/css/topPage.css


p {
  color : red;
}

/src/js/topPage.js


function execute() {
  var elem = document.getElementById("output");
  var now = new Date();
  var hour = now.getHours();
  var min = now.getMinutes();
  elem.innerHTML = "L'heure actuelle est" + hour + ":" + min + "est";
}

Lancer à l'aide de Dockerfile

Une fois que le fichier est prêt, accédez au répertoire où se trouve Dockerfile dans le terminal et créez une image de conteneur avec la commande docker build.

$ docker build -t app:0.0.1 .

Vérifiez si l'image du conteneur a été créée.

$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
app                     0.0.1               8ddbfbb33917        14 hours ago        133MB

Vous avez créé une image de conteneur appelée ʻapp avec une version de 0.0.1`.

Ensuite, démarrez le conteneur à partir de l'image du conteneur avec la commande docker container run.

$ docker container run --name app --rm -d -p 8080:80 app:0.0.1

Vérifiez s'il fonctionne

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
f64c1f7ef410        app:0.0.1           "/docker-entrypoint.…"   7 seconds ago       Up 6 seconds        0.0.0.0:8080->80/tcp   app

Il semble que le conteneur fonctionne. Essayez d'accéder à http: // localhost: 8080 /.

Capture d'écran 2020-10-18 14.56.15.png

Vous pouvez voir que l'écran est affiché et que CSS fonctionne!

Essayez d'appuyer sur le bouton "Exécuter".

Capture d'écran 2020-10-18 14.57.04.png

JavaScript fonctionne également!

Cliquons sur le lien "suivant".

Capture d'écran 2020-10-18 14.58.43.png

Vous pouvez également passer à la page suivante!

Si vous voulez entrer dans le conteneur en cours d'exécution, utilisez la commande docker exec.

$ docker exec -it app bash -p

Arrêtez le conteneur et vérifiez la liste des conteneurs.

$ docker stop app
app
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES

C'est arrêté.

Méthode utilisant docker-compose

docker-conmpose est inclus lorsque vous installez Docker. À l'origine, il est pratique de l'utiliser pour gérer plusieurs conteneurs tels que le serveur Web et le serveur de base de données, mais ~~ parce que ma technologie est insuffisante ~~ Cette fois, je vais créer docker-compose avec seulement nginx.

Structure des dossiers

J'ai ajouté docker-compose.yml et stocké la configuration Dockerfile dans le dossier nginx.

Structure des dossiers


root/
├── docker-compose.yml
└── nginx
    ├── Dockerfile
    ├── conf
    │   ├── default.conf
    │   └── nginx.conf
    └── src
        ├── css
        │   └── topPage.css
        ├── js
        │   └── topPage.js
        ├── nextPage.html
        └── topPage.html

docker-compose.yml Le docker-compose.yml définit tout, de la construction de l'image du conteneur au démarrage du conteneur.

docker-compose.yml


version: '3'               #Ce docker-compose.du fichier yml"Format"Version de
services:                  #Définissez un service.
  nginx:                   #Déclaration à définir pour nginx.
    build: ./nginx         #Chemin Dockerfile
    image: app:0.0.2       #Spécifiez le nom de l'image
    container_name: "app"  #Spécifiez le nom du conteneur
    ports:                 #Spécifiez le contenu de la divulgation du port.
      - "8080:80"          #S'il est de 80 du côté du conteneur, ce sera de 8080 du côté de l'hôte.
    volumes:               #Ajoutez le dossier hôte au conteneur. Côté hôte:Côté conteneur
      - ./nginx/conf/default.conf:/etc/nginx/conf.d/default.conf  #Copier le fichier de configuration
      - ./nginx/src:/usr/share/nginx/html         #Copier la source

volumes peut être omis car il chevauche la partie décrite dans Dockerfile.

Si vous voulez augmenter le nombre de serveurs de base de données et d'autres services, ajoutez-les dans la même ligne que nginx.

Lancer avec docker-compose

Naviguez vers le dossier où se trouve docker-compose.yml et utilisez la commande docker-compose up.

$ docker-compose up -d
Starting app        ... done
$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                               NAMES
94af0a7f210d        docker_plactice_nginx   "/docker-entrypoint.…"   2 minutes ago       Up About a minute   0.0.0.0:8080->80/tcp                app

Vous pouvez vérifier le démarrage! Alors que le port etc. a été spécifié en commençant par Dockerfile, il est facile de commencer par docker-compose!

Pour l'arrêter, utilisez la commande docker-compose down.

$ docker-compose down
Stopping app        ... done
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Il n'y a pas de conteneurs en cours d'exécution.

À la fin

Dans cet article, la commodité de docker-compose n'a pas été pleinement exploitée. Cette fois, je suis désolé d'être à mi-chemin car je voulais l'organiser une fois. La prochaine fois, j'aimerais pouvoir écrire un article sur le démarrage simultané de plusieurs conteneurs avec docker-compose ...

Recommended Posts

Peut-être que ça marche! Affichez les pages HTML de nginx avec Docker!
Peut-être que ça marche! Commençons avec Docker!
Mettre à jour MySQL de 5.7 à 8.0 avec Docker
[docker] [nginx] Créer un ALB simple avec nginx
Afficher les spécifications de l'API avec Laravel + SwaggerUI + Docker