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

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

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

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)先級(jí)獲取
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)境變量方式,同時(shí)也支持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'

同級(jí)目錄下執(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 

方法補(bǔ)充

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

整體流程

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

下面是整個(gè)過程的步驟:

  • 編寫Java程序
  • 編寫Dockerfile
  • 構(gòu)建Docker鏡像
  • 運(yùn)行Docker容器

具體操作步驟

步驟1:編寫Java程序

首先,我們創(chuàng)建一個(gè)簡(jiǎn)單的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

接下來,我們編寫一個(gè)Dockerfile,用于構(gòu)建Docker鏡像。

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

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

步驟3:構(gòu)建Docker鏡像

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

docker build -t my-java-app .

這將會(huì)構(gòu)建一個(gè)名為my-java-app的Docker鏡像。

步驟4:運(yùn)行Docker容器

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

docker run my-java-app Docker

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

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

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

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

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

在 Dockerfile 中,我們可以使用 ENV 指令來設(shè)置環(huán)境變量,然后在 Java 應(yīng)用中通過 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"]

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

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

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

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

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

我們可以通過 System.getProperty() 方法來讀取傳遞的參數(shù)。以下是一個(gè)簡(jiǎn)單的 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 加載實(shí)際配置文件
    }
}

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ù)傳遞示例總結(jié)

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

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

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

相關(guān)文章

  • 如何通過Docker部署Nginx服務(wù)

    如何通過Docker部署Nginx服務(wù)

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

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

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

    Docker 部署 pSQL 服務(wù)器的詳細(xì)教程

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

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

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

    在Ubuntu中安裝Docker教程

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

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

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

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

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

    docker?search?mysql報(bào)錯(cuò)問題分析及解決

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

    使用Docker鏡像構(gòu)建Go應(yīng)用的實(shí)現(xiàn)方法

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

    關(guān)于dockerfile build過程中報(bào)/bin/sh: pip: command not found的解決方法

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

最新評(píng)論

徐水县| 乌审旗| 滦南县| 深水埗区| 固始县| 江永县| 永定县| 冀州市| 克什克腾旗| 手游| 新化县| 乌兰浩特市| 黄浦区| 苍梧县| 顺昌县| 永宁县| 台东县| 垣曲县| 华安县| 浑源县| 乌兰浩特市| 河西区| 新巴尔虎右旗| 马关县| 昂仁县| 东城区| 山丹县| 本溪市| 包头市| 横山县| 那曲县| 巴塘县| 甘德县| 桃园市| 乌兰浩特市| 博罗县| 观塘区| 石台县| 大名县| 邳州市| 石首市|