Rumah > Java > javaTutorial > Membina dan Meletakkan Apl Java Pertama Anda dengan Docker dalam Just inutes

Membina dan Meletakkan Apl Java Pertama Anda dengan Docker dalam Just inutes

Susan Sarandon
Lepaskan: 2025-01-14 09:42:42
asal
202 orang telah melayarinya

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

Mari buat apl java ringkas yang mengembalikan teks dan tersedia pada port 1800 persekitaran setempat anda menggunakan bekas Docker dalam masa 5 minit (bergantung pada kelajuan sambungan internet anda).

Anda sentiasa boleh mengambil kod sumber penuh daripada repositori awam saya:
https://github.com/alexander-uspenskiy/simple-service

Persediaan Ketergantungan

Langkah 1: Prasyarat

  1. Pasang Java 8
  2. Pasang Maven
  3. Pasang Docker
  4. Pasang Sambungan Kod VS

Pemasangan Mac

# 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
Salin selepas log masuk
Salin selepas log masuk

Pemasangan Windows

# 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
Salin selepas log masuk
Salin selepas log masuk

Persediaan Projek (Kedua-dua Platform)

# Create project structure
mkdir -p simple-service
cd simple-service
Salin selepas log masuk

Tetapan Kod VS

{
    "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"
}
Salin selepas log masuk

Sahkan Pemasangan

# Verify Java
java -version

# Verify Maven
mvn -version

# Verify Docker
docker --version
Salin selepas log masuk

Persediaan Projek

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

Mencipta apl ujian

Selepas langkah terakhir anda harus mempunyai direktori perkhidmatan ringkas dengan struktur yang telah dibina sebelumnya.

Langkah 1

  1. Kemas kini fail pom.xml
<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>
Salin selepas log masuk

Langkah 2

Tambah logik pada App.java

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");
    }
}
Salin selepas log masuk

Penjelasan pantas:

  1. Import & Persediaan

    • Menggunakan pakej com.sun.net.httpserver terbina dalam
    • Mencipta pelayan HTTP mudah tanpa kebergantungan luaran
    • Berjalan pada port 1800
  2. Konfigurasi Pelayan

HttpServer.create()

  • Mencipta instance pelayan baharu

InetSocketAddress(1800)

  • Mengikat pada port 1800
  • 0 - Nilai tunggakan lalai untuk baris gilir sambungan
  1. Pengendalian Permintaan

createContext("/")

  • Mengendalikan semua permintaan ke laluan root "/"
  • Ungkapan Lambda mentakrifkan pengendali permintaan
  • Mengembalikan "Hello dari Java!" untuk semua permintaan
  1. Aliran Respons

    • Menetapkan kod respons 200 (OK)
    • Menetapkan panjang kandungan
    • Menulis bait respons kepada strim output
    • Autotutup strim dengan cuba-dengan-sumber
  2. Permulaan Pelayan

setExecutor(null)

  • Menggunakan pelaksana lalai

server.start()

  • Mula mendengar permintaan
  • Mencetak mesej pengesahan

Langkah 3

Buat Dockerfile dalam akar projek:

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

Langkah 4
Cipta docker-compose.yml untuk membina dan memetakan bekas ke port 1800

services:
  app:
    build: .
    ports:
      - "1800:1800"
    restart: unless-stopped
Salin selepas log masuk

Langkah 5
Cipta build.sh

#!/bin/bash
mvn clean package
docker compose build
docker compose up
Salin selepas log masuk

Dan benarkan kebenaran exec untuk fail ini dalam terminal:

# 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
Salin selepas log masuk
Salin selepas log masuk

Bina dan laksanakan apl

Lari sahaja

# 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
Salin selepas log masuk
Salin selepas log masuk

Anda sepatutnya telah membina projek, imej dibuat dan bekas dilaksanakan.

Untuk menguji apl hanya buka penyemak imbas di alamat http://localhost:1800/

Selamat Pengekodan!

Atas ialah kandungan terperinci Membina dan Meletakkan Apl Java Pertama Anda dengan Docker dalam Just inutes. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan