Es wäre einfacher, wenn die Entwicklungsumgebung für Java und Spring auch mit Docker eingerichtet würde. In diesem Artikel habe ich auch VSCode in Docker aufgenommen. Da die gesamte Entwicklungsumgebung mit Docker verwaltet werden kann, wird dies empfohlen, da sie einfach zu verwalten ist.
Es ist eine Umgebung zum Ausführen einer Anwendung in einem Container unter Linux. Anwendungen und Bibliotheken können im selben Container konsolidiert und wiederverwendet werden. https://ja.wikipedia.org/wiki/Docker
VSCode https://ja.wikipedia.org/wiki/Visual_Studio_Code Editor von Microsoft. Wenn Sie das Dart Plugin installieren, können Sie die Interpolationsfunktion usw. verwenden. Dies ist praktisch.
Code-Server Es ist ein großartiger Typ, der VSCode als Webdienst ausführen kann. https://github.com/cdr/code-server
https://github.com/kyorohiro/my-code-server/tree/master/java_spring
FROM openjdk:11
#
# GRADLE
RUN mkdir /works
WORKDIR /works
RUN apt-get update
RUN apt-get install -y curl wget gnupg less lsof net-tools git apt-utils -y
RUN apt-get install -y build-essential libssl-dev curl git-core
RUN apt-get install -y emacs
RUN wget https://downloads.gradle.org/distributions/gradle-5.4.1-bin.zip
RUN unzip gradle-5.4.1-bin.zip
ENV PATH="/works/gradle-5.4.1/bin:${PATH}"
#
#Wird möglicherweise nicht benötigt
# https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-Für die Abhängigkeit
# nodejs for vscode plugin
RUN curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh -o install_nvm.sh
RUN sh install_nvm.sh
ENV NVM_DIR="/root/.nvm"
RUN chmod o+x /root/.nvm/nvm.sh
RUN /bin/bash -c "source /root/.nvm/nvm.sh && nvm install v12.0.0"
ENV PATH="/root/.nvm/versions/node/v12.0.0/bin/:${PATH}"
#
# code-server
RUN wget https://github.com/cdr/code-server/releases/download/1.939-vsc1.33.1/code-server1.939-vsc1.33.1-linux-x64.tar.gz
RUN tar xzf code-server1.939-vsc1.33.1-linux-x64.tar.gz -C ./ --strip-components 1
(1) Führen Sie das Docker-Image aus
docker build -t java_spring_vscode .
docker run -p 8443:8443 -p 8080:8080 -it java_spring_vscode bash
(2) Starten Sie vscode mit dem Code-Server
mkdir /works/w
/works/code-server /works/w --allow-http --no-auth
(1) https://marketplace.visualstudio.com/items?itemName=redhat.java
(2) Kann unnötig sein
.vscode/settings.json
{
"java.home": "/usr/lib/jvm/java-11-openjdk-amd64",
"java.maven.downloadSources": true,
"java.import.gradle.enabled": true,
"java.errors.incompleteClasspath.severity": "warning",
"java.configuration.updateBuildConfiguration": "automatic"
}
(1) Terminal -> New Terminal on VSCODE
(2) Am Terminal
$ gradle init --type java-application
$ gradle build
(3) Fügen Sie Eclipse zu build.gradle für das Redhat Java Plugin hinzu
plugins {
id 'java'
id 'application'
id 'eclipse'
}
repositories {
jcenter()
}
dependencies {
implementation 'com.google.guava:guava:27.0.1-jre'
testImplementation 'junit:junit:4.12'
}
mainClassName = 'hello.App'
(4) Versuchen Sie, Hello World !! auszuführen.
$ gradle eclipse
$ gradle build
$ gradle run
(1) Ändern Sie build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
bootJar {
baseName = 'gs-rest-service'
version = '0.1.0'
}
repositories {
mavenCentral()
}
sourceCompatibility = 11
targetCompatibility = 11
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile('org.springframework.boot:spring-boot-starter-test')
}
(2) Herunterladen eines Pakets
$ gradle build
$ gradle eclipse
(3) src/main/java/hello/App.java
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
(4) src/main/java/hello/Greeting.java
package hello;
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId(){
return this.id;
}
public String getContent() {
return this.content;
}
}
(5) src/main/java/hello/GreetingController.java
package hello;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}
(6) Versuchen Sie zu starten
$ SERVER_PORT=8080 SERVER_HOST=0.0.0.0 gradle tasks bootRun
(7) and, open 'http://127.0.0.1:8080/greeting' at your browser
das ist alles.
Code-Server war sehr praktisch. https://github.com/cdr/code-server
das Ende.
Der Code für diese Zeit ist unten zusammengefasst. https://github.com/kyorohiro/my-code-server/tree/master/java_spring
PS
[a] Wenn Sie fortfahren möchten
$ docker ps -a
check id and
$ docker start < id >
$ docker exec -it < id > bash
[b] Wenn Sie die Einstellungen ändern möchten
$ docker commit < id > java_spring_vscode_xxx
$ docker run -p 8443:8443 -p 8080:8080 -it java_spring_vscode_xxx bash
[c] Montieren
$ docker run -p 8443:8443 -p 8080:8080 -v /Users/kyorohiro/w/xxx:/app/w -it java_spring_vscode bash
Recommended Posts