最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker環(huán)境下java參數(shù)傳遞與獲取

 更新時間:2025年08月19日 09:14:58   作者:愛碼少年 00fly.online  
這篇文章主要為大家詳細介紹了docker環(huán)境下如何實現(xiàn)java參數(shù)傳遞與獲取,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以了解下

docker環(huán)境下java參數(shù)傳遞與獲取

// docker-compose.yml -> environment -> USER
String userEnv = System.getenv("USER");

// java -jar xxx.jar --user=jackson
String userArg = Stream.of(args).filter(arg -> arg.contains("--user")).map(arg -> StringUtils.substringAfter(arg, "=")).collect(Collectors.joining());

// java -jar -Duser=jackson xxx.jar
String userProp = System.getProperty("user", "");

// 按優(yōu)先級獲取
String userName = StringUtils.defaultIfBlank(userEnv, StringUtils.defaultIfBlank(userArg, userProp));

java命令行賦值

#args
java -jar docker-java-params-0.0.1.jar --user=jackson

#系統(tǒng)屬性
java -jar -Duser=jackson docker-java-params-0.0.1.jar

docker run賦值

#環(huán)境變量、args
docker run -e USER='user001' registry.cn-shanghai.aliyuncs.com/00fly/docker-java-params:0.0.1 --user='jackson'

docker-compose賦值

優(yōu)先環(huán)境變量方式,同時也支持args、系統(tǒng)屬性

新建docker-compose.yml

services:
  docker-java-params:
    image: registry.cn-shanghai.aliyuncs.com/00fly/docker-java-params:0.0.1
    container_name: docker-java-params
    command: --user="user by args"
    entrypoint: java -server -Djava.security.egd=file:/dev/./urandom -Xshareclasses -Xquickstart -Duser="user by prop" -jar /app.jar
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 32M
        reservations:
          cpus: '0.05'
          memory: 32M
    restart: on-failure
    environment:
    - USER=user by env
    logging:
      driver: json-file
      options:
        max-size: 5m
        max-file: '1'

同級目錄下執(zhí)行命令

docker-compose up -d && docker logs -f docker-java-params
[+] Running 1/1
 ? Container docker-java-params  Started   
[main] INFO com.fly.simple.MainRun - userEnv: user by env
[main] INFO com.fly.simple.MainRun - userArg: user by args
[main] INFO com.fly.simple.MainRun - userProp: user by prop
[main] INFO com.fly.simple.MainRun - userName: user by env

并且支持占位符

services:
  docker-java-params:
    image: registry.cn-shanghai.aliyuncs.com/00fly/docker-java-params:0.0.1
    container_name: docker-java-params
    command: '--user="${USER2}"'
    entrypoint: 'java -server -Djava.security.egd=file:/dev/./urandom -Xshareclasses -Xquickstart -Duser=${USER3} -jar /app.jar'
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 32M
        reservations:
          cpus: '0.05'
          memory: 32M
    restart: on-failure
    environment:
    - USER=${USER1}
    logging:
      driver: json-file
      options:
        max-size: 5m
        max-file: '1'

占位符傳遞參數(shù)

docker-compose down && USER1='user001' USER2='user002' USER3='user003' docker-compose up -d && docker logs -f docker-java-params 

方法補充

1.docker java實現(xiàn)傳參

整體流程

首先,我們需要編寫一個簡單的Java程序,然后將其打包成一個Docker鏡像,并在運行時傳遞參數(shù)給這個程序。

下面是整個過程的步驟:

  • 編寫Java程序
  • 編寫Dockerfile
  • 構建Docker鏡像
  • 運行Docker容器

具體操作步驟

步驟1:編寫Java程序

首先,我們創(chuàng)建一個簡單的Java程序,用于接收參數(shù)并輸出。

public class Main {
    public static void main(String[] args) {
        if (args.length > 0) {
            System.out.println("Hello, " + args[0] + "!");
        } else {
            System.out.println("Hello, Docker Java!");
        }
    }
}

步驟2:編寫Dockerfile

接下來,我們編寫一個Dockerfile,用于構建Docker鏡像。

FROM openjdk:8-jdk-alpine
COPY Main.java /
RUN javac Main.java
CMD ["java", "Main"]

在這個Dockerfile中,我們使用了一個基于Alpine Linux的OpenJDK鏡像,并將我們的Java程序復制到鏡像中并編譯。

步驟3:構建Docker鏡像

現(xiàn)在,我們可以使用以下命令構建Docker鏡像。

docker build -t my-java-app .

這將會構建一個名為my-java-app的Docker鏡像。

步驟4:運行Docker容器

最后,我們可以運行一個Docker容器,并傳遞參數(shù)給Java程序。

docker run my-java-app Docker

2.java Docker鏡像傳參數(shù)

在實際開發(fā)中,可能會遇到以下幾種情況需要傳遞參數(shù):

  • 配置文件路徑:應用程序的配置文件位置可能有所不同。
  • 運行時參數(shù):某些業(yè)務邏輯需要運行時傳遞參數(shù)以供處理。
  • 環(huán)境變量:一些敏感信息,如密碼可能需要在運行時注入。

如何在 Java 鏡像中傳遞參數(shù)?

1. 使用 Dockerfile 設置默認參數(shù)

在 Dockerfile 中,我們可以使用 ENV 指令來設置環(huán)境變量,然后在 Java 應用中通過 System.getenv() 方法獲取。例如:

FROM openjdk:11
COPY ./myapp.jar /app/myapp.jar
ENV APP_CONFIG_PATH=/app/config/application.properties
CMD ["java", "-jar", "/app/myapp.jar"]

在這個例子中,我們定義了一個名為 APP_CONFIG_PATH 的環(huán)境變量,其值為配置文件的路徑。

2. 在運行時傳遞參數(shù)

在 Docker 運行容器時,可以通過命令行參數(shù)傳遞參數(shù)。例如:

docker run -e APP_CONFIG_PATH=/path/to/config -p 8080:8080 my-java-app

3. 在 Java 應用中讀取參數(shù)

我們可以通過 System.getProperty() 方法來讀取傳遞的參數(shù)。以下是一個簡單的 Java 程序:

public class MyApp {
    public static void main(String[] args) {
        String configPath = System.getProperty("app.config.path", "default/path/to/config");
        System.out.println("Config Path: " + configPath);
        // 這里可以根據(jù) configPath 加載實際配置文件
    }
}

4. 通過 Docker Compose 傳遞參數(shù)

如果使用 Docker Compose,可以在 docker-compose.yml 文件中定義環(huán)境變量:

version: '3'
services:
  myapp:
    image: my-java-app
    environment:
      - APP_CONFIG_PATH=/path/to/config
    ports:
      - "8080:8080"

參數(shù)傳遞示例總結

在實際應用中,參數(shù)傳遞可以非常靈活。類似于以下場景可以使得應用更具有適應性:

  • 不同的測試環(huán)境:可以根據(jù)需求更改參數(shù),而無需修改代碼。
  • 增強安全性:通過環(huán)境變量傳遞敏感信息,避免在代碼中硬編碼。

到此這篇關于docker環(huán)境下java參數(shù)傳遞與獲取的文章就介紹到這了,更多相關docker傳遞與獲取java參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何通過Docker部署Nginx服務

    如何通過Docker部署Nginx服務

    本文闡述的Docker部署Nginx方案,核心在于通過目錄掛載實現(xiàn)數(shù)據(jù)持久化,既保留了容器化部署的輕量特性,又解決了配置與數(shù)據(jù)的管理難題,本文將詳細介紹如何通過Docker部署?Nginx?1.24.0?版本,并實現(xiàn)配置文件、日志和網(wǎng)站內(nèi)容的持久化管理,感興趣的朋友一起看看吧
    2025-11-11
  • docker-compose安裝RabbitMQ及插件操作步驟

    docker-compose安裝RabbitMQ及插件操作步驟

    這篇文章主要為大家介紹了docker-compose安裝RabbitMQ及插件操作步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Docker 部署 pSQL 服務器的詳細教程

    Docker 部署 pSQL 服務器的詳細教程

    本文詳細介紹了如何使用Edu郵箱申請Azure訂閱并開通免費VPS,以及在Ubuntu VPS上通過Docker部署pSQL服務器的方法,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • Docker查看鏡像的Dockerfile(docker history和docker inspect命令)

    Docker查看鏡像的Dockerfile(docker history和docker inspec

    這篇文章主要給大家介紹了關于Docker查看鏡像的Dockerfile的相關資料,文中主要運用的是docker history和docker inspect命令,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • 在Ubuntu中安裝Docker教程

    在Ubuntu中安裝Docker教程

    這篇文章主要介紹了在Ubuntu中安裝Docker教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 如何解決docker logs無法實時輸出腳本打印的內(nèi)容

    如何解決docker logs無法實時輸出腳本打印的內(nèi)容

    這篇文章主要介紹了如何解決docker logs無法實時輸出腳本打印的內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • docker-compose鏡像發(fā)布springboot項目的流程分析

    docker-compose鏡像發(fā)布springboot項目的流程分析

    Docker-Compose項目由Python編寫,調(diào)用Docker服務提供的API來對容器進行管理。因此,只要所操作的平臺支持Docker API,就可以在其上利用Compose來進行編排管理,接下來通過本文給大家介紹docker-compose發(fā)布springboot項目的流程分析,一起看看吧
    2021-06-06
  • docker?search?mysql報錯問題分析及解決

    docker?search?mysql報錯問題分析及解決

    Docker是現(xiàn)在非常流行的一種容器化技術,能夠方便開發(fā)者將應用程序打包進入容器,做到跨平臺的部署,這篇文章主要介紹了docker?search?mysql報錯問題分析及解決的相關資料,需要的朋友可以參考下
    2025-11-11
  • 使用Docker鏡像構建Go應用的實現(xiàn)方法

    使用Docker鏡像構建Go應用的實現(xiàn)方法

    本文主要介紹了使用Docker鏡像構建Go應用的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 關于dockerfile build過程中報/bin/sh: pip: command not found的解決方法

    關于dockerfile build過程中報/bin/sh: pip: command not found的解決方法

    這篇文章主要介紹了關于dockerfile build過程中報/bin/sh: pip: command not found的解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論

望奎县| 宁海县| 宁夏| 老河口市| 德阳市| 嵊泗县| 枣庄市| 河北区| 梨树县| 白水县| 江门市| 九台市| 小金县| 东台市| 漠河县| 囊谦县| 茌平县| 蒙自县| 邵东县| 平塘县| 阿荣旗| 临沂市| 龙山县| 青龙| 巴东县| 陕西省| 玉溪市| 乌兰县| 皋兰县| 开江县| 科技| 常山县| 合水县| 两当县| 广汉市| 武城县| 莱州市| 新晃| 扶绥县| 响水县| 水城县|