Heim >Java >javaLernprogramm >Erstellen und Bereitstellen Ihrer ersten Java-App mit Docker in nur wenigen Minuten

Erstellen und Bereitstellen Ihrer ersten Java-App mit Docker in nur wenigen Minuten

Susan Sarandon
Susan SarandonOriginal
2025-01-14 09:42:42202Durchsuche

Building and Deploying Your First Java App with Docker in Just inutes

Lassen Sie uns eine einfache Java-App erstellen, die Text zurückgibt und mithilfe des Docker-Containers in 5 Minuten auf Port 1800 Ihrer lokalen Umgebung verfügbar ist (abhängig von der Geschwindigkeit Ihrer Internetverbindung).

Sie können jederzeit den vollständigen Quellcode aus meinem öffentlichen Repository herunterladen:
https://github.com/alexander-uspenskiy/simple-service

Abhängigkeiten einrichten

Schritt 1: Voraussetzungen

  1. Installieren Sie Java 8
  2. Maven installieren
  3. Docker installieren
  4. VS-Code-Erweiterungen installieren

Mac-Installation

# Install Homebrew if not present
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Java 8
brew tap homebrew/cask-versions
brew install --cask temurin8

# Install Maven
brew install maven

# Install Docker Desktop
brew install --cask docker

# Install VS Code
brew install --cask visual-studio-code

# Install VS Code Extensions
code --install-extension vscjava.vscode-java-pack
code --install-extension ms-azuretools.vscode-docker

Windows-Installation

# Install Chocolatey if not present
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

# Install Java 8
choco install temurin8

# Install Maven
choco install maven

# Install Docker Desktop
choco install docker-desktop

# Install VS Code
choco install vscode

# Install VS Code Extensions
code --install-extension vscjava.vscode-java-pack
code --install-extension ms-azuretools.vscode-docker

Projekt-Setup (beide Plattformen)

# Create project structure
mkdir -p simple-service
cd simple-service

VS-Code-Einstellungen

{
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-1.8",
            "path": "/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home",
            "default": true
        }
    ],
    "java.configuration.updateBuildConfiguration": "automatic",
    "java.compile.nullAnalysis.mode": "automatic",
    "maven.executable.path": "/usr/local/bin/mvn"
}

Überprüfen Sie die Installation

# Verify Java
java -version

# Verify Maven
mvn -version

# Verify Docker
docker --version

Projekt-Setup

# Create Maven project
mvn archetype:generate \
  -DgroupId=com.example \
  -DartifactId=simple-service \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DarchetypeVersion=1.4 \
  -DinteractiveMode=false

Erstellen der Test-App

Nach dem letzten Schritt sollten Sie über ein Simple-Service-Verzeichnis mit der vorgefertigten Struktur verfügen.

Schritt 1

  1. Pom.xml-Datei aktualisieren
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>simple-service</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>simple-service</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents.client5</groupId>
        <artifactId>httpclient5</artifactId>
        <version>5.4</version>
    </dependency>
</dependencies>
<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.example.App</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Schritt 2

Logik zu App.java hinzufügen

package com.example;

import com.sun.net.httpserver.HttpServer;
import java.net.InetSocketAddress;
import java.io.IOException;
import java.io.OutputStream;

public class App {
    public static void main(String[] args) throws IOException {
        HttpServer server = HttpServer.create(new InetSocketAddress(1800), 0);
        server.createContext("/", (exchange -> {
            String response = "Hello from Java!";
            exchange.sendResponseHeaders(200, response.length());
            try (OutputStream os = exchange.getResponseBody()) {
                os.write(response.getBytes());
            }
        }));
        server.setExecutor(null);
        server.start();
        System.out.println("Server started on port 1800");
    }
}

Kurze Erklärungen:

  1. Importe & Einrichtung

    • Verwendet das integrierte com.sun.net.httpserver-Paket
    • Erstellt einen einfachen HTTP-Server ohne externe Abhängigkeiten
    • Läuft auf Port 1800
  2. Serverkonfiguration

HttpServer.create()

  • Erstellt eine neue Serverinstanz

InetSocketAddress(1800)

  • Bindet an Port 1800
  • 0 – Standardrückstandswert für Verbindungswarteschlange
  1. Anfragebearbeitung

createContext("/")

  • Verarbeitet alle Anfragen an den Root-Pfad „/“
  • Lambda-Ausdruck definiert den Anforderungshandler
  • Gibt „Hallo aus Java!“ zurück. für alle Anfragen
  1. Antwortfluss

    • Setzt Antwortcode 200 (OK)
    • Legt die Länge des Inhalts fest
    • Schreibt Antwortbytes in den Ausgabestream
    • Schließt den Stream automatisch mit „Try-with-resources“
  2. Serverstart

setExecutor(null)

  • Verwendet den Standard-Executor

server.start()

  • Beginnt, auf Anfragen zu warten
  • Druckt eine Bestätigungsnachricht

Schritt 3

Erstellen Sie eine Docker-Datei im Stammverzeichnis des Projekts:

FROM amazoncorretto:8
WORKDIR /app
COPY target/simple-service-1.0-SNAPSHOT.jar app.jar
EXPOSE 1800
CMD ["java", "-jar", "app.jar"]

Schritt 4
Erstellen Sie docker-compose.yml, um den Container zu erstellen und Port 1800 zuzuordnen

services:
  app:
    build: .
    ports:
      - "1800:1800"
    restart: unless-stopped

Schritt 5
Erstellen Sie build.sh

#!/bin/bash
mvn clean package
docker compose build
docker compose up

Und erteilen Sie im Terminal die Exec-Berechtigung für diese Datei:

# Install Homebrew if not present
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Java 8
brew tap homebrew/cask-versions
brew install --cask temurin8

# Install Maven
brew install maven

# Install Docker Desktop
brew install --cask docker

# Install VS Code
brew install --cask visual-studio-code

# Install VS Code Extensions
code --install-extension vscjava.vscode-java-pack
code --install-extension ms-azuretools.vscode-docker

Erstellen Sie die App und führen Sie sie aus

Einfach ausführen

# Install Chocolatey if not present
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

# Install Java 8
choco install temurin8

# Install Maven
choco install maven

# Install Docker Desktop
choco install docker-desktop

# Install VS Code
choco install vscode

# Install VS Code Extensions
code --install-extension vscjava.vscode-java-pack
code --install-extension ms-azuretools.vscode-docker

Sie sollten ein Projekt erstellt, ein Image erstellt und einen Container ausgeführt haben.

Um die App zu testen, öffnen Sie einfach den Browser unter der Adresse http://localhost:1800/

Viel Spaß beim Programmieren!

Das obige ist der detaillierte Inhalt vonErstellen und Bereitstellen Ihrer ersten Java-App mit Docker in nur wenigen Minuten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:MethodenreferenzenNächster Artikel:Methodenreferenzen