[JAVA] Lancez l'application Nginx + Spring Boot avec docker-compose

Aperçu

Créez le Dockerfile suivant et démarrez-le à partir de docker-compose.

  1. Transférez la demande vers le port 80 de l'hôte vers le port 8080 du conteneur Nginx
  2. Transférez la demande à Nginx vers le port 8090 du conteneur Spring Boot

Quoi utiliser

La version est également répertoriée. Ce n'est pas que vous ne pouvez pas le faire sans cette version.

Structure du répertoire

Seuls les éléments requis cette fois sont répertoriés.

Créer divers Dockerfiles

Nginx

Démarrez Nginx Dockerfile

docker/docker-nginx/Dockerfile


FROM nginx:1.15.0

ADD nginx.conf /etc/nginx/conf.d/nginx.conf

Fichier de configuration Nginx

Ce n'est pas un Dockerfile, mais il est utilisé dans le script du Dockerfile.

docker/docker-nginx/nginx.conf


server {
  listen 8080;
  charset utf-8;
  access_log off;

  location / {
    proxy_pass http://app:8090;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /static {
    access_log   off;
    expires      30d;

    alias /app/static;
  }
}

Je ne sais pas si c'est le meilleur. Il n'y a pas de HTTPS et vous devez ajouter ce dont votre application a besoin ici.

L'application de l'application: 8090 est le conteneur Spring Boot de docker-compose.yml décrit plus tard.

Spring Boot

Dockerfile de démarrage de Spring Boot (cloner à partir de Git et démarrer)

docker/docker-springboot/Dockerfile


FROM openjdk:10.0.1-jdk

RUN git clone https://github.com/xxxx/repo_name.git
WORKDIR ./repo_name

RUN ./gradlew --full-stacktrace -q build

CMD ./gradlew bootRun

Dockerfile de démarrage de Spring Boot (commencez par vous référer à la source locale)

docker/docker-springboot-local/Dockerfile


FROM openjdk:10.0.1-jdk

Étant donné que les paramètres nécessaires sont spécifiés à partir de docker-compose.yml, le résultat est uniquement FROM.

Créer un fichier docker-compose.yml

docker-compose.yml


version: '3'

services:

  nginx:
    container_name: container_nginx
    build: docker/docker-nginx
    restart: always
    ports:
      - 80:8080
    hostname: container_nginx_hostname
    links:
      - app

  app:
    container_name: container_springboot
    restart: always
    build: docker/docker-springboot
    expose:
      - 8090
    command: ./gradlew bootRun
    hostname: container_springboot_hostname

#Utilisé lors d'un lancement rapide localement
#  app:
#    container_name: container_springboot-local
#    restart: always
#    build: docker/docker-springboot-local
#    expose:
#      - 8090
#    command: ./gradlew bootRun
#    hostname: container_springboot-local_hostname
#    working_dir: /container_springboot
#    volumes:
#      - ./:/container_springboot

Courir

Si vous le démarrez avec docker-comose, vous pouvez exécuter l'API sur le chemin localhost / application.

Résumé

Comme il a été écrit grossièrement pour ne pas oublier le contenu de Dockerfile et docker-compose.yml, il n'y a pas d'explication détaillée, mais j'ai pu accepter la requête HTTP avec Nginx et l'envoyer à Spring Boot.

Recommended Posts

Lancez l'application Nginx + Spring Boot avec docker-compose
Créer une application d'enquête avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
Démarrez le développement d'applications Web avec Spring Boot
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Disponibilité de l'application Spring Boot 2.3
Télécharger avec Spring Boot
Configurer l'application Spring Boot avec le module multiple maven
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Essayez d'utiliser OpenID Connect avec Keycloak (application Spring Boot)
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
[Spring Boot] Création d'applications Web
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Application Java CICS-Run - (4) Application Spring Boot
Spring Boot à partir de Docker
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Nginx + Spring Boot Parrot Return LineBot fait avec VPS
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Application Spring Boot qui spécifie les paramètres de connexion à la base de données avec des paramètres
Utiliser l'authentification de base avec Spring Boot
Développement d'applications Spring Boot dans Eclipse
Points de révision du code de l'application Spring Boot
gRPC sur Spring Boot avec grpc-spring-boot-starter
Déploiement à chaud avec le développement Spring Boot
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Obtenez des résultats de validation avec Spring Boot
(Intellij) Hello World avec Spring Boot
Google Cloud Platform avec Spring Boot 2.0.0
Implémenter l'application Spring Boot dans Gradle
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
La coopération des messages a commencé avec Spring Boot
Créons une application Web de gestion de livres avec Spring Boot part1
Créons une application Web de gestion de livres avec Spring Boot part3
Créons une application Web de gestion de livres avec Spring Boot part2
[Débutant] Essayez d'écrire l'API REST pour l'application Todo avec Spring Boot
Lancer un (ancien) projet Spring Boot avec IntelliJ
Hello World avec Eclipse + Spring Boot + Maven
Envoyez des notifications régulières avec LineNotify + Spring Boot
Effectuer un test de confirmation de transaction avec Spring Boot
HTTPS avec Spring Boot et Let's Encrypt
Essayez d'utiliser Spring Boot avec VS Code
J'ai essayé l'initialisation paresseuse avec Spring Boot 2.2.0
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Traitement asynchrone avec Spring Boot en utilisant @Async
Application CI / CD Spring avec CircleCI (Heroku)
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf