Websphere 容器在使用 stopServer.sh 时停止

Websphere container stops when using stopServer.sh

提问人:Ali Khalil 提问时间:10/12/2023 更新时间:10/13/2023 访问量:50

问:

如果我使用 stopServer.sh 脚本停止服务器,Docker 容器会自动停止。重新启动服务器的推荐做法是什么?

我需要应用新配置和docker restart image_id删除新配置。

Docker Server 配置 容器 WebSphere

评论

0赞 Pino 10/12/2023
可以重新启动已停止且未删除的容器,但是在容器内进行此类更改不是一个好主意。
0赞 Ali Khalil 10/12/2023
是的,我可以重新启动它,但配置将被删除,我只需要停止启动服务器,有人说默认情况下(除非您覆盖CMD)容器内的服务器是PID 1,因此,如果您退出该过程,Docker将正确停止容器。因此,您必须再次启动容器,这将自动启动其中的服务器。
0赞 Pino 10/12/2023
如果重新启动同一个容器,而不是一个新容器,则会恢复其文件系统。
0赞 Pino 10/12/2023
请参阅 docker 容器是否保留文件更改?
0赞 Ali Khalil 10/12/2023
是的,但是当我重新启动时,server.xml中的配置将被覆盖

答:

0赞 David Maze 10/13/2023 #1

重新启动服务器的推荐做法是什么?

使用 停止现有容器,使用 删除它,然后使用具有相同选项的新容器。使用 Docker Compose 或 Kubernetes 等更高级别的工具,可以将容器选项存储在 YAML 文件中,从而更轻松地重现地执行此操作。docker stopdocker rmdocker run

我需要应用新的配置...中的配置...server.xml

在主机系统上获取默认值的副本,可能用于将其从现有容器中获取。在本地编辑它。重新启动容器时,请使用 Docker 绑定挂载将文件注入容器,例如server.xmldocker cp

docker run ... -v "$PWD/server.xml":/etc/websphere/server.xml ...

请勿尝试管理服务器、编辑其配置、重新启动服务器等。以这种方式所做的任何更改都将在容器退出后立即丢失,并且在某些情况下可能导致容器退出您的直接控制之外docker exec

2赞 Gas 10/13/2023 #2

推荐的做法是在容器启动时使用 jython 脚本进行任何必要的配置。查看此页面 ci.docker.websphere-traditional,它描述了所有可能的选项,例如准备 jython 脚本或属性文件。

例如,您的 dockerfile 如下所示:

FROM ibmcom/websphere-traditional:<version>
# copy property files and jython scripts, using the flag `--chown=was:root` to set the appropriate permission
RUN /work/configure.sh

这是该页面中的示例,它显示了基于属性文件的配置:

例如,如果您有以下 /work/config/001-was-config.props:

ResourceType=JavaVirtualMachine
ImplementingResourceType=Server
ResourceId=Cell=!{cellName}:Node=!{nodeName}:Server=!{serverName}:JavaProcessDef=:JavaVirtualMachine=
AttributeInfo=jvmEntries
#
#
#Properties
#
initialHeapSize=2048 #integer,default(0)

然后,只需生成以下 Dockerfile,即可创建具有此配置的新映像:

FROM ibmcom/websphere-traditional:latest
COPY --chown=was:root 001-was-config.props /work/config/
RUN /work/configure.sh

您可以在 prop 文件名上使用数字前缀,以便可以按适当的顺序应用具有依赖关系的 prop。

它还描述了最佳实践(引用):

根据 Docker 的最佳实践,您应该创建一个新映像 (来自 ibmcom/websphere-traditional),用于添加单个应用程序 以及相应的配置。您应避免将 映像(启动后)通过 Admin Console 或 wsadmin(除非 它用于调试目的),因为如果 从映像生成一个新容器。

与 Liberty 不同,WebSphere 传统版使用非常复杂的配置文件结构,不建议手动更改这些文件。

在本地环境中,重新启动修改后的容器可能是一种临时解决方案,但不能将其视为建议的部署做法。