Spring boot 如何启动Spring启动服务并运行启动脚本

Spring boot 如何启动Spring启动服务并运行启动脚本,spring-boot,jhipster,jib,Spring Boot,Jhipster,Jib,我使用JHipster创建springboot应用程序,我认为它使用JIB创建docker容器。一切都很好,但做一个启动脚本或运行其他东西怎么样。在我的情况下,我需要启动apt安装的服务 CMD service pcscd start 如果我只是在图片中,这不会发生在启动时。当我将它添加到Kubernetes中的POD定义中时,它会清除springboot应用程序的启动,然后退出,就像我只想运行命令一样。如何运行启动脚本,首先启动我的pcscd服务,然后启动spring boot应用程序?有

我使用JHipster创建springboot应用程序,我认为它使用JIB创建docker容器。一切都很好,但做一个启动脚本或运行其他东西怎么样。在我的情况下,我需要启动apt安装的服务

CMD service pcscd start 

如果我只是在图片中,这不会发生在启动时。当我将它添加到Kubernetes中的POD定义中时,它会清除springboot应用程序的启动,然后退出,就像我只想运行命令一样。如何运行启动脚本,首先启动我的pcscd服务,然后启动spring boot应用程序?

有多种方法可以运行多个命令,主要是使用shell:

  • 使用
    ENTRYPOINT
    的“shell形式”运行命令。(但是,
    Dockerfile
    参考更喜欢下面的“exec表单”)在幕后,这个“shell表单”实际上运行一个shell二进制文件(如
    /bin/sh
    ),并让shell解释“脚本”(这里,
    echo one和&echo two
  • 使用
    ENTRYPOINT
    的“exec form”运行命令。在这种情况下,将直接调用shell二进制文件
  • 如果命令变得复杂,请考虑将它们放入文件中。与上面没有什么不同,现在shell二进制文件(如下面文件顶部的
    #/bin/sh
    所示)解释脚本文件中的内容
  • 同上,但使用“exec表单”
  • (仅供参考,您可以使用
    ENTRYPOINT
    CMD
    进行组合,但我不会详细介绍,因为对于执行多个命令,通常
    ENTRYPOINT
    就足够了。您可以查看
    Dockerfile
    参考以了解
    ENTRYPOINT
    CMD
    如何交互。)

    对于Jib,您可以使用container.entrypoint来定制图像入口点。(检查和引用。)并且您可以使用
    功能(/)提供任意文件,包括shell脚本。此外,
    允许使用
    向shell脚本提供例如可执行位

    还要注意,Jib使用的默认Java基本映像没有
    /bin/sh
    二进制(shell),因此您必须使用具有shell的不同基本映像


    最后,请注意,我只是回答如何实现对容器映像运行多个命令。这不一定是在Kubernetes(或任何生产环境)上以健壮和弹性的方式运行服务的理想方式。

    有多种方法可以运行多个命令,主要是使用shell:

  • 使用
    ENTRYPOINT
    的“shell形式”运行命令。(但是,
    Dockerfile
    参考更喜欢下面的“exec表单”)在幕后,这个“shell表单”实际上运行一个shell二进制文件(如
    /bin/sh
    ),并让shell解释“脚本”(这里,
    echo one和&echo two
  • 使用
    ENTRYPOINT
    的“exec form”运行命令。在这种情况下,将直接调用shell二进制文件
  • 如果命令变得复杂,请考虑将它们放入文件中。与上面没有什么不同,现在shell二进制文件(如下面文件顶部的
    #/bin/sh
    所示)解释脚本文件中的内容
  • 同上,但使用“exec表单”
  • (仅供参考,您可以使用
    ENTRYPOINT
    CMD
    进行组合,但我不会详细介绍,因为对于执行多个命令,通常
    ENTRYPOINT
    就足够了。您可以查看
    Dockerfile
    参考以了解
    ENTRYPOINT
    CMD
    如何交互。)

    对于Jib,您可以使用container.entrypoint来定制图像入口点。(检查和引用。)并且您可以使用
    功能(/)提供任意文件,包括shell脚本。此外,
    允许使用
    向shell脚本提供例如可执行位

    还要注意,Jib使用的默认Java基本映像没有
    /bin/sh
    二进制(shell),因此您必须使用具有shell的不同基本映像


    最后,请注意,我只是回答如何实现对容器映像运行多个命令。这不一定是在Kubernetes(或任何生产环境)上以健壮和弹性的方式运行服务的理想方式。

    Ok是否在使用jhipster的src/main/jib/entrypoint.sh中生成entrypoint.sh?Ok是否在使用jhipster的src/main/jib/entrypoint.sh中生成entrypoint.sh?
    FROM ubuntu:bionic
    ENTRYPOINT echo one && echo two
    
    FROM ubuntu:bionic
    ENTRYPOINT ["/bin/sh", "-c", "echo one && echo two"]
    
    echo -e '#/bin/sh'"\necho one && echo two" > my-entrypoint.sh
    
    FROM ubuntu:bionic
    COPY my-entrypoint.sh /
    RUN chmod +x /my-entrypoint.sh
    ENTRYPOINT /my-entrypoint.sh
    
    ENTRYPOINT ["/bin/sh", "-c", "/my-entrypoint.sh"]