首页 > 解决方案 > 在 shell 脚本中退出 docker exec -ti

问题描述

我正在编写一个脚本,在其中执行以下命令:

docker exec -ti keycloak11_service-keycloak_1 /opt/jboss/keycloak/bin/standalone.sh \
-Djboss.socket.binding.port-offset=151 \
-Dkeycloak.migration.action=export  \
-Dkeycloak.migration.provider=singleFile \
-Dkeycloak.migration.realmName=demo \
-Dkeycloak.migration.usersExportStrategy=REALM_FILE \
-Dkeycloak.migration.file=/keycloak/realm-export.json

这会从我正在运行的 keycloak 实例中导出文件 realm-export.json。执行后,我想对另一台服务器执行 scp。问题是,当我执行 ti 注释时,独立的 keycloak 启动并且我的脚本卡住了,它说:正在侦听端口...

由于此时导出操作已完成,我可以终止该进程或输入任何命令(即 cmd+c)。有没有办法通过脚本做到这一点?

标签: bashdockershell

解决方案


将您的命令放入 Dockerfile 并以分离模式运行容器docker run -d。您也可以使用绑定挂载从容器访问主机卷。这样,您的结果将存储在主机上,您可以稍后访问它们。


推荐阅读