代码之家  ›  专栏  ›  技术社区  ›  nad87563

Docker向入口点运行传递参数

  •  1
  • nad87563  · 技术社区  · 6 年前

    我可以使用-e选项传递环境变量。 但我不知道如何使用docker run命令将命令行参数传递给入口点中的jar。

    文档文件

    FROM openjdk
    ADD . /dir
    WORKDIR /dir
    COPY ./test-1.0.1.jar /dir/test-1.0.1.jar
    ENTRYPOINT java -jar /dir/test-1.0.1.jar
    

    试验室

    #! /bin/bash -l
    
    export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
    export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
    
    $value=7
    
    docker run -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY  -i -t testjava  $value
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Siyu Zeeshan Akhter    6 年前

    在其exec表单中使用入口点

    ENTRYPOINT ['java', '-jar', '/dir/test-1.0.1.jar']
    

    然后当你跑步时 docker run -it testjava $value , $value 将在您的入口点后“附加”如下 java -jar /dir/test-1.0.1.jar $value

        2
  •  2
  •   grapes    6 年前

    你应该释放出 ENTRYPOINT CMD .

    将命令行的开始部分(不希望更改)放入 入口点 以及尾巴,应该可以配置成 CMD . 然后您可以简单地将必要的参数附加到 docker run 命令。 这样地:

    文档文件

    FROM openjdk
    ADD . /dir
    WORKDIR /dir
    COPY ./test-1.0.1.jar /dir/test-1.0.1.jar
    ENTRYPOINT ["java", "-jar"]
    CMD ["/dir/test-1.0.1.jar"]
    

    上海

    # this will run default jar - /dir/test-1.0.1.jar
    docker run testjava
    
    # this will run overriden jar
    docker run testjava /dir/blahblah.jar
    

    本文给出了一个很好的解释: https://medium.freecodecamp.org/docker-entrypoint-cmd-dockerfile-best-practices-abc591c30e21