首頁 >Java >java教程 >只需幾分鐘即可使用 Docker 建置和部署您的第一個 Java 應用程式

只需幾分鐘即可使用 Docker 建置和部署您的第一個 Java 應用程式

Susan Sarandon
Susan Sarandon原創
2025-01-14 09:42:42202瀏覽

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

讓我們創建一個簡單的java 應用程序,它返回文本並在5 分鐘內使用Docker 容器在本地環境的端口1800 上可用(取決於您的互聯網連接速度) 。

您隨時可以從我的公共儲存庫取得完整的原始碼:
https://github.com/alexander-uspenskiy/simple-service

依賴關係設置

第 1 步:先決條件

  1. 安裝 Java 8
  2. 安裝 Maven
  3. 安裝 Docker
  4. 安裝 VS Code 擴充

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

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

項目設定(兩個平台)

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

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"
}

驗證安裝

# Verify Java
java -version

# Verify Maven
mvn -version

# Verify Docker
docker --version

項目設定

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

建立測試應用程式

最後一步之後,您應該擁有具有預先建置結構的簡單服務目錄。

第 1 步

  1. 更新 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>

第 2 步

在 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");
    }
}

快速解釋:

  1. 導入與設定

    • 使用內建的 com.sun.net.httpserver 套件
    • 建立簡單的 HTTP 伺服器,無需外部依賴
    • 在連接埠 1800 上運作
  2. 伺服器設定

HttpServer.create()

  • 建立新的伺服器實例

InetSocketAddress(1800)

  • 綁定到連接埠 1800
  • 0 - 連接隊列的預設積壓值
  1. 請求處理

createContext("/")

  • 處理所有對根路徑「/」的請求
  • Lambda 表達式定義請求處理程序
  • 返回「來自 Java 的你好!」滿足所有請求
  1. 回應流程

    • 設定回應代碼 200(確定)
    • 設定內容長度
    • 將回應位元組寫入輸出流
    • 使用 try-with-resources 自動關閉流
  2. 伺服器啟動

setExecutor(null)

  • 使用預設執行器

server.start()

  • 開始監聽請求
  • 列印確認訊息

第三步

在專案根目錄建立Dockerfile:

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

步驟 4
建立 docker-compose.yml 來建置容器並將其對應到連接埠 1800

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

第 5 步
建立build.sh

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

並在終端機中允許此檔案的執行權限:

# 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

建置並執行應用程式

只需運行

# 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

您應該已建置專案、建立映像並執行容器。

要測試應用程序,只需打開瀏覽器,位址為 http://localhost:1800/

快樂編碼!

以上是只需幾分鐘即可使用 Docker 建置和部署您的第一個 Java 應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:方法參考下一篇:方法參考