[JAVA] Spring Boot à partir de Docker

Quand j'ai pensé développer une application Web avec Spring Boot of Java, j'ai décidé de créer un environnement de développement à l'aide de Docker ainsi que d'étudier Docker.

Environnement d'exploitation

Implémentation de Spring Boot

Télécharger le modèle

Tout d'abord, créez un modèle Spring Boot avec Spring Initializr.

  1. Sélectionnez Projet Gradle
  2. Remplacez Groupe par bonjour (la valeur par défaut est correcte)
  3. Remplacez ʻArtifact` par bonjour (vous pouvez laisser la valeur par défaut)
  4. Ajouter Web aux Dépendances

スクリーンショット 2017-10-11 15.42.42.png

Ensuite, téléchargez le modèle avec Generate Project.

Modifier build.gradle

Utilisez Gradle pour créer des applications et gérer les bibliothèques dépendantes. Le modèle téléchargé ci-dessus contient le script de construction build.gradle, changez-le comme suit.

buildscript {
    ext {
        springBootVersion = '1.5.7.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'

jar {
    baseName = 'hello-world'
    version = '0.1.0'
}

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

Si l'éditeur est IntelliJ IDEA, il installera les bibliothèques nécessaires sans autorisation. Si vous ne l'utilisez pas, lancez gradlew clean build.

Modifications apportées à HelloApplication.java

Changez src / main / java / hello / hello / HelloApplication.java dans le modèle téléchargé comme suit.

package hello.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class HelloApplication {

    @RequestMapping("/")
    public String home() {
        return "Hello World from Docker";
    }

    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }

}

Contrôle de fonctionnement

Vérifions le fonctionnement ici pour le moment. Le fichier jar doit être créé sous build / libs. Exécutez la commande suivante et vérifiez si la sortie est Hello World from Docker.

$ ./gradlew build && java -jar build/libs/hello-world-0.1.0.jar
$ curl http://localhost:8080

Construction d'environnement avec Docker

Créer un Dockerfile

À ce stade, configurez l'environnement avec Docker. Si Docker n'est pas installé, téléchargez-le depuis ici et installez-le. Placez Dockerfile dans le répertoire racine et décrivez le contenu comme suit.

FROM openjdk:jdk-alpine
VOLUME /tmp
RUN mkdir /app
WORKDIR /app
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar build/libs/hello-world-0.1.0.jar" ]

paramètres de composition du menu fixe

À l'avenir, je pense qu'il y aura des cas où je veux gérer séparément le conteneur pour les applications et le conteneur pour DB, donc j'utiliserai docker-compose. Placez docker-compose.yml dans le répertoire racine et décrivez le contenu comme suit.

version: '2'
services:
    app:
        build: .
        image: tiqwab/boot:0.0.1
        ports:
            - "8080:8080"
        volumes:
            - .:/app

Créer une image Docker et démarrer un conteneur

Maintenant que vous êtes prêt, créez l'image docker avec la commande suivante et démarrez le conteneur.

$ docker-compose up --build

Dans cet état, essayez d'accéder à http: // localhost: 8080 /. Vous devriez voir Hello World from Docker.

À partir de maintenant, vous pouvez démarrer le conteneur avec la commande suivante.

#Commencez
$ docker-compose up -d

#Arrêtez
$ docker-compose stop

Avec ce qui précède, vous pouvez facilement créer un environnement de développement pour Spring Boot à l'aide de Docker.

référence

Recommended Posts

Spring Boot à partir de Docker
Spring Boot commençant par copie
Télécharger avec Spring Boot
Créer un environnement de développement Spring Boot avec docker
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Construction de l'environnement Docker × 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
printemps × docker
[Java] [Spring Boot] Spécifier le profil d'exécution --Spring Boot à partir de NetBeans
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Créez une application avec Spring Boot 2
Liaison de base de données avec doma2 (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
Créez une application avec Spring Boot
Google Cloud Platform avec Spring Boot 2.0.0
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
Spring Boot à partir de zéro Partie 2
Spring Boot à partir de zéro Partie 1
La coopération des messages a commencé avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
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
Créer un environnement de développement Spring Boot-gradle-mysql avec Docker
Essayez d'utiliser Spring Boot avec VS Code
Démarrez le développement d'applications Web avec Spring Boot
Lancez l'application Nginx + Spring Boot avec docker-compose
J'ai essayé l'initialisation paresseuse avec Spring Boot 2.2.0
Forme de botte de printemps
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Traitement asynchrone avec Spring Boot en utilisant @Async
Image de l'application Spring Boot à l'aide de jib-maven-plugin et lancez-la avec Docker
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
Spring Boot Rappelez-vous
gae + botte à ressort
Erreur Javaw.exe lors du démarrage de Spring Boot (STS)
(IntelliJ + gradle) Hello World avec Spring Boot
Utiliser le cache avec EhCashe 2.x avec Spring Boot
Test de validation de classe de formulaire avec Spring Boot
Exécutez l'application WEB avec Spring Boot + Thymeleaf