Openshift如何开始成为一个胖子

时间:2018-12-12 12:35:00

标签: spring-boot openshift fatjar

我在Openshift上使用Spring-boot fat-jar部署映像。我的图片基于redhat-openjdk18-openshift:1.2。

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

order_status

我的问题是:

  1. 这种胶水来自何处(exec java ...)?以及Openshift如何知道这个jar文件是可执行文件?
  2. 我想添加一些命令行参数。我发现以下工作方式: enter image description here

但是,然后我松开了上面的Jolokia东西。有更好的方法吗?

更新: 我使用以下策略:

策略:
..sourceStrategy:
.... from:
......种类:ImageStreamTag
......名称:'redhat-openjdk18-openshift:1.2'
......名称空间:openshift

然后像: oc开始构建$ SERVICE_NAME --from-file = my-app.jar

此外,您链接的文档也正是我所遵循的。参见上面的步骤(2)。然后我松开Jolokia的东西。我想我正在寻找一种方法来让jo扩展现有的Entrypoint,而不是对其进行重载。

1 个答案:

答案 0 :(得分:1)

命令exec java -javaagent:/opt/jolokia/jolokia.jar=config=/opt/jolokia/etc/jolokia.properties是容器的入口点,是运行容器时执行的命令和参数。构建图像时设置入口点。

您没有说要使用什么策略来构建映像,但是如果您想进一步控制入口点和其他容器参数,则可以使用Docker strategy。使用此方法可以完全控制图像,因此可以设置诸如环境变量,参数和参数之类的东西。

如果您不想打扰构建配置,则可以使用Dockerfile在Openshift外部构建映像,然后将映像直接部署到openshift。这是Dockerfile tutorial

编辑:

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

编辑:

根据您提供的更新,我认为切换到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图像流,则可能需要创建它。