首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启动Spring服务并运行启动脚本

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

Stack Overflow用户
提问于 2019-11-05 03:02:14
回答 1查看 1.2K关注 0票数 0

我正在使用JHipster创建springboot应用程序,我认为它使用JIB来创建docker容器。一切都很好,但是做一个启动脚本或者运行额外的东西会怎么样呢?在我的例子中,我需要启动一个apt安装的服务。

代码语言:javascript
复制
CMD service pcscd start 

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

EN

回答 1

Stack Overflow用户

发布于 2019-11-05 16:36:07

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

  1. 使用ENTRYPOINT的"shell表单“运行这些命令。(然而,Dockerfile引用更倾向于下面的"exec表单“。)在场景后面,这个"shell表单“实际上运行了一个shell二进制文件(如/bin/sh),并让shell解释”脚本“(这里是echo one && echo two)。
代码语言:javascript
复制
FROM ubuntu:bionic
ENTRYPOINT echo one && echo two
  1. 使用ENTRYPOINT的"exec表单“运行这些命令。在这种情况下,直接调用shell二进制文件。
代码语言:javascript
复制
FROM ubuntu:bionic
ENTRYPOINT ["/bin/sh", "-c", "echo one && echo two"]
  1. 如果命令变得复杂,请考虑将它们放入文件中。与上面没有什么区别,因为现在shell二进制文件(如下面文件顶部的#/bin/sh所示)解释脚本文件中的内容。
代码语言:javascript
复制
echo -e '#/bin/sh'"\necho one && echo two" > my-entrypoint.sh
代码语言:javascript
复制
FROM ubuntu:bionic
COPY my-entrypoint.sh /
RUN chmod +x /my-entrypoint.sh
ENTRYPOINT /my-entrypoint.sh
  1. 就像上面一样,但是使用"exec表单“。
代码语言:javascript
复制
ENTRYPOINT ["/bin/sh", "-c", "/my-entrypoint.sh"]

(FYI,您可以使用ENTRYPOINTCMD进行组合,但我不打算讨论这个问题,因为对于执行多个命令,通常ENTRYPOINT就足够了。您可以检查Dockerfile引用来了解ENTRYPOINTCMD如何交互。)

对于Jib,可以使用<container><entrypoint> / container.entrypoint自定义图像入口点。(查看MavenGradle引用。)您可以使用<extraDirectories>特性(Maven / Gradle)提供任意文件,包括shell脚本。此外,<extraDirectories>允许使用<permissions>向shell脚本提供例如可执行位。

还请注意,默认的Java使用的没有/bin/sh二进制文件(一个shell),因此您必须使用另一个具有shell的基本映像。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58703883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档