[JAVA] Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung

Einführung

Als Hobbyentwicklung sprach das Team über die Erstellung eines Webdienstes mit Spring Boot. Ich verstehe Java, aber mein Wissen über Spring Boot ist 0, also habe ich versucht, eine REST-API mit Docker zu erstellen. Bei der Erstellung habe ich auf den folgenden Artikel verwiesen.

Die Entwicklungsumgebung ist wie folgt

Klicken Sie hier für die Quelle dieses Artikels

Was zu machen

スクリーンショット 2018-03-04 22.02.53.png

--DB Container verwendet vorhandenes MySQL Image

Erstellen Sie Spring Boot

Ich weiß nicht warum SpringBoot, deshalb werde ich RestApi als Vorbereitung lokal machen.

DB Vorbereitung

Legen Sie die erforderlichen Daten in den MySQL-Container und starten Sie ihn. Wenn Sie dies nicht tun, besteht der Test nicht und Sie können nicht erstellen. Was Sie beim Starten des Containers tun müssen, ist wie folgt

Wenn diese hinzugefügt werden, lautet der Befehl wie folgt. docker container run -v $(PWD)/sql:/docker-entrypoint-initdb.d -d -e MYSQL_DATABASE=mydb -e MYSQL_USER=sboot -e MYSQL_PASSWORD=sboot -e MYSQL_ROOT_PASSWORD=root-pass -p 3306:3306 -d mysql

Es wird eine lange Zeit dauern, aber lassen Sie uns das ertragen, bis wir eine Docker-Komposition machen.

Erstellen Sie build.gradle

SpringBoot scheint gradle für die Build- und Bibliotheksverwaltung zu verwenden. Füllen Sie die erforderlichen Elemente in SPRING INITIALIZR aus und legen Sie die Vorlage ab. Bearbeiten Sie die Datei build.gradle oben im Verzeichnis wie folgt.

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

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

jar {
    baseName = 'boot-get-started'
    version = '0.0.1-SNAPSHOT'
}

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.springframework.boot:spring-boot-starter-data-rest")
    compile('mysql:mysql-connector-java:6.0.6')
    compileOnly('org.projectlombok:lombok')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

Es ist praktisch, die erforderliche Bibliothek in den Abhängigkeiten auszufüllen. Ich bin froh, dass Sie wahrscheinlich bei testCompile testen. Ich möchte später mehr darüber erfahren.

gradlew clean build schließt die Bibliotheksinstallation ab.

Erstellung von Entität und Repository

Erstellen Sie Enttity und Repository für DB in src / main / java / com / example. Ich verstehe diesen Bereich nicht wirklich, weil ich gerade den [Referenzartikel] kopiert habe (https://blog.tiqwab.com/2017/03/21/docker-java.html). Dieses Mal liegt der Schwerpunkt auf dem Aufbau der Umwelt, daher werde ich sie aufteilen.

Application.yml erstellen

Erstellen Sie "src / main / resources / application.yml". Geben Sie hier das DB-Verbindungsziel ein. Beachten Sie, dass das Verbindungsziel unterschiedlich ist, je nachdem, ob die Anwendung lokal ausgeführt oder auf einem Container verbunden ist.

spring:
  profiles:
    active: localhost
---
spring:
  profiles: localhost
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mydb
    username: sboot
    password: sboot
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true
    hibernate:
      ddl-auto: update
  data:
    rest:
      base-path: /api

---
spring:
  profiles: docker
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://dbserver/mydb
    username: sboot
    password: sboot
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true
    hibernate:
      ddl-auto: update
  data:
    rest:
      base-path: /api

Erstellen Sie ein Profil, das localhost und Docker entspricht, und legen Sie localhost als Standard fest. Die Profilumschaltung erfolgt in DockerFile (später beschrieben).

Bauen

Führen Sie "gradlew build" mit dem eingerichteten MySQL-Container durch, und wenn "BUILD SUCCESS FUL" angezeigt wird, ist dies in Ordnung. Nachdem der Build erfolgreich war, ist es Zeit, die Anwendung zu containerisieren und auszuführen.

DockerFile erstellen und komponieren

Erstellen Sie zunächst eine Docker-Datei für Ihre Anwendung.

# use alpine as base image
FROM ubuntu:16.04

RUN apt-get update
RUN apt-get -y install openjdk-8-jdk
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64

# recommended by spring boot
VOLUME /tmp

# create directory for application
RUN mkdir /app
WORKDIR /app

# jar target
ENV JAR_TARGET "boot-get-started-0.0.1-SNAPSHOT.jar"

# set entrypoint to execute spring boot application
ENTRYPOINT ["sh","-c","java -jar -Dspring.profiles.active=docker build/libs/${JAR_TARGET}"]

Schreiben Sie als Nächstes docker-compose.yml, das die Container db, app und phpmyadmin kombiniert.

version: '2'
services:

    dbserver:
        image: mysql
        volumes:
            - ./sql:/docker-entrypoint-initdb.d
            - mysql-db:/var/lib/mysql
        environment:
            MYSQL_DATABASE: mydb
            MYSQL_USER: sboot
            MYSQL_PASSWORD: sboot
            MYSQL_ROOT_PASSWORD: root
           
    app:
        build: .
        image: watari/boot:0.1.0                            
        depends_on:
            - dbserver
        ports:
            - "8080:8080"
        volumes:
            - .:/app
        environment:
            JAR_TARGET: boot-get-started-0.0.1-SNAPSHOT.jar

    myadmin:
        image: phpmyadmin/phpmyadmin
        depends_on:
            - dbserver
        environment:
            PMA_ARBITRARY: 1
            PMA_HOST: dbserver
            PMA_USER: root
            PMA_PASSWORD: root
        ports:
            - "1111:80"

volumes:
    mysql-db:
        driver: local

Lauf

Es kann mit "Docker-Compose Up" ausgeführt werden. Wenn Sie zum ersten Mal ein Bild aus einer Docker-Datei erstellen müssen, fügen Sie die Option "--build" hinzu. Überprüfen Sie den Container nach dem Starten und Ausführen mit dem Befehl curl.

$ curl http://localhost:8080/api/users
{
  "_embedded" : {
    "users" : [ {
      "firstName" : "Taro",
      "lastName" : "Yamada",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/users/1"
        },
        "user" : {
          "href" : "http://localhost:8080/api/users/1"
        }
      }
    }, {
      "firstName" : "Hanako",
      "lastName" : "Tanaka",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/api/users/2"
        },
        "user" : {
          "href" : "http://localhost:8080/api/users/2"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/api/users"
    },
    "profile" : {
      "href" : "http://localhost:8080/api/profile/users"
    }
  }
}

abschließend

Ich habe keine Kenntnisse über Spring Boot, aber ich konnte mithilfe eines Containers problemlos eine Umgebung erstellen. Da ich jedoch lokal baue, habe ich das Gefühl, dass es etwas ist. Warum also nicht auch den Container den Build ausführen lassen? Ich denke auch. Außerdem entwickle ich jetzt basierend auf Emacs, aber ich denke, es ist notwendig, es gut zu kombinieren, wenn ich in Zukunft in einer integrierten Entwicklungsumgebung wie Eclipse entwickle (ich habe hier kein Know-how). Ich denke, ich werde dies als Ausgangspunkt für Versuch und Irrtum verwenden.

Recommended Posts

Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Erstellen Sie mit Docker eine Spring Boot-gradle-mysql-Entwicklungsumgebung
Erstellen Sie mit Docker eine Vue3-Umgebung!
Erstellen einer Spring Boot-Entwicklungsumgebung in Vagrant
Erstellen Sie mit Docker eine PureScript-Entwicklungsumgebung
Erstellen Sie mit Docker eine Wordpress-Entwicklungsumgebung
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
Erstellen Sie eine Website mit Spring Boot + Gradle (jdk1.8.x)
[Memo] Erstellen Sie mit Docker ganz einfach eine CentOS 8-Umgebung
Erstellen Sie mit Spring Boot eine einfache Such-App
Erstellen Sie eine Spring Boot-Umgebung mit Windows + VS-Code
Erstellen Sie einen Web-API-Server mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Erstellen Sie mit dem Befehl cURL + tar ein Spring Boot-App-Entwicklungsprojekt
Erstellen Sie mit Docker für Mac Teil2 eine Entwicklungsumgebung für Java-Webanwendungen
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
Erstellen Sie eine Chisel-Entwicklungsumgebung mit Windows 10 + WSL2 + VScode + Docker
Erstellen Sie mit Docker eine Node.js-Umgebung
Erstellen Sie eine App mit Spring Boot 2
Erstellen Sie mit Docker eine SolrCloud-Überprüfungsumgebung
Erstellen Sie eine App mit Spring Boot
Erstellen Sie eine Entwicklungsumgebung, um Ruby on Jets + React-Apps mit Docker zu erstellen
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
Erstellen Sie mit IntelliJ IDEA eine Entwicklungsumgebung "Spring Thorough Introduction"
Erstellen Sie mit Docker schnell eine Webumgebung
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Erstellen Sie mit Spring Batch eine einfache On-Demand-Charge
Lassen Sie uns eine Java-Entwicklungsumgebung erstellen (Aktualisierung)
[Docker] Erstellen Sie mit Docker eine Node.js + Express + Webpack-Umgebung
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Einfache Konstruktion der Docker + Django-Entwicklungsumgebung
[SAP] Erstellen Sie eine Entwicklungsumgebung mit NW AS ABAP Developer Edition (1).
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
Ich habe versucht, eine Spring MVC-Entwicklungsumgebung auf einem Mac zu erstellen
Erstellen Sie mit Docker Compose eine Entwicklungsumgebung für Django + MySQL + nginx
Erstellen Sie eine Entwicklungsumgebung für Docker + Rails6 + Postgresql
Beginnen wir mit Java-Create a Development Environment ②
Beginnen wir mit Java-Create a Development Environment ①
Erstellen Sie mit Docker sofort eine Privoxy + Tor-Umgebung
[Windows] [IntelliJ] [Java] [Tomcat] Erstellen Sie mit IntelliJ eine Umgebung für Tomcat 9
Erstellen Sie eine Laravel / Docker-Umgebung mit VSCode devcontainer
Erstellen Sie eine Spring Boot-Anwendung mit IntelliJ IDEA
Spring Boot Entwicklung-Entwicklungsumgebung-
Beachten Sie, dass ich Oracle 11g + Spring Boot mit Vagrant + Docker Compose ausprobiert habe
[Kopieren und Einfügen] Erstellen Sie mit Docker Compose Part 2 eine Laravel-Entwicklungsumgebung
Einfache Erstellung der Docker Compose + Django-Entwicklungsumgebung
Erstellen Sie mit Gradle Spring Boot-Projekte nach Umgebung
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
Erstellen Sie eine CRUD-App mit Spring Boot 2 + Thymeleaf + MyBatis
Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials (Rails 6 + PostgreSQL + Webpack)
[Win10] Erstellen Sie eine JSF-Entwicklungsumgebung mit NetBeans
Erstellen Sie Ihr eigenes Dienstprogramm mit Thymeleaf mit Spring Boot