Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Openshift如何启动一个胖罐子_Spring Boot_Openshift_Fatjar - Fatal编程技术网

Spring boot Openshift如何启动一个胖罐子

Spring boot Openshift如何启动一个胖罐子,spring-boot,openshift,fatjar,Spring Boot,Openshift,Fatjar,我在Openshift上部署了一个带有Spring boot胖jar的映像。我的图像基于redhat-openjdk18-openshift:1.2 我的应用程序启动良好,我在终端中看到以下内容 Starting the Java application using /opt/run-java/run-java.sh ... exec java -javaagent:/opt/jolokia/jolokia.jar=config=/opt/jolokia/etc/jolokia.propert

我在Openshift上部署了一个带有Spring boot胖jar的映像。我的图像基于redhat-openjdk18-openshift:1.2

我的应用程序启动良好,我在终端中看到以下内容

Starting the Java application using /opt/run-java/run-java.sh ...

exec java -javaagent:/opt/jolokia/jolokia.jar=config=/opt/jolokia/etc/jolokia.properties
-XX:+UseParallelGC -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40
-XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MaxMetaspaceSize=100m 
-XX:+ExitOnOutOfMemoryError -cp . -jar /deployments/MYAPPLICATION.jar
我的问题是:

  • 这种胶水是从哪里来的(execjava…)?Openshift如何知道这个jar文件是可执行的
  • 我想添加一些命令行参数。我发现以下方法可行:
  • 但是我把上面的Jolokia的东西弄松了。有更好的办法吗

    更新: 我使用以下策略:

    策略:
    …源策略:
    …发件人:
    ……种类:ImageStreamTag
    ……名称:“redhat-openjdk18-openshift:1.2”
    ……名称空间:openshift

    然后像: oc start build$SERVICE\u NAME--from file=my-app.jar


    另外,您链接的文档正是我所遵循的。见上文第(2)步。然后我把Jolokia的东西弄丢了。我想我正在寻找一种方法,jo只是扩展现有的入口点,而不是重载它。

    命令
    execjava-javaagent:/opt/jolokia/jolokia.jar=config=/opt/jolokia/etc/jolokia.properties
    是容器的入口点,它是容器运行时执行的命令和参数。在生成图像时设置入口点

    您没有说明要使用什么策略来构建映像,但是如果您希望对入口点和其他容器参数进行更多控制,那么可以使用。使用此方法可以完全控制图像,因此可以设置环境变量、参数和参数等

    如果您不想麻烦构建配置,那么您可以使用Dockerfile在Openshift外部构建映像,然后直接将映像部署到Openshift。给你

    编辑:

    另外,我认为您仍然可以使用当前正在尝试的方法,但是您需要手动将Jolokia参数添加到规范中,但我认为最好的方法仍然是在构建配置中配置所有内容,您可以控制整个映像的入口点和参数,而不是覆盖现有入口点。下面是在容器中运行命令的示例

    编辑:

    根据您提供的更新,我认为切换到docker策略仍然是您的最佳选择。源代码策略只是自动为您构建映像,但正如我上面提到的,dockerfile策略将允许您控制整个构建过程。以下是内联dockerfile的示例:

      apiVersion: v1
      kind: BuildConfig
      metadata:
        annotations:
          description: Defines how to build the application
        labels:
          application: MYAPPLICATION
        name: MYAPPLICATION
        namespace: PROJECT_NAME
      spec:
        output:
          to:
            kind: ImageStreamTag
            name: MYAPPLICATION:latest
        source:
          binary: {}
          dockerfile: |-
            FROM redhat-openjdk18-openshift:1.2
            COPY deployments/* /
            ENTRYPOINT  java -jar MYAPPLICATION.jar
          type: Binary
        strategy:
          dockerStrategy:
            from:
              kind: ImageStreamTag
              name: redhat-openjdk18-openshift:1.2
          type: Docker
    

    这样,您就可以通过复制现有命令并添加所需的任何其他内容来扩展入口点。如果项目中还没有openjdk映像流,您可能必须在项目中创建它。

    更新了我的答案。我仍然认为docker策略会给你最大的灵活性。