You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Shell搭配docker-compose部署后无法正常交互的技术求助

解决方案:Spring Shell在Docker容器中无法交互的问题

1. 修正Docker Compose配置

确保docker-compose.yml中正确添加终端相关配置,这两个参数必须放在service节点下:

version: '3.7'
services:
  artemis-viewer:
    image: image:0.0.1-SNAPSHOT
    ports:
      - "8071:8071"
    environment:
      SPRING_APPLICATION_NAME: "artemis-viewer"
    networks:
      backend:
        aliases:
          - "artemis-viewer"
    stdin_open: true  # 维持标准输入流打开
    tty: true         # 为容器分配伪终端

networks:
  backend:
    driver: bridge

2. 启用Spring Shell交互模式

在Dockerfile的ENTRYPOINT中添加JVM参数,强制开启Spring Shell交互模式,确保Java识别终端环境:

FROM openjdk:19 as build
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract
FROM openjdk:19
WORKDIR application
COPY --from=build application/dependencies/ ./
COPY --from=build application/spring-boot-loader/ ./
COPY --from=build application/snapshot-dependencies/ ./
COPY --from=build application/application/ ./

ENTRYPOINT ["java", "-Dspring.shell.interactive.enabled=true", "-Djava.io.tty=true", "org.springframework.boot.loader.launch.JarLauncher"]

3. 使用正确的启动命令

  • 避免用docker-compose up -d后台启动容器,直接执行docker-compose up前台运行,终端会直接映射到Spring Shell界面。
  • 或者使用docker-compose run命令启动服务,该命令默认分配交互终端:
    docker-compose run --rm artemis-viewer
    

额外排查点

如果以上步骤仍未解决,检查应用配置文件(如application.properties/application.yml),确保没有禁用交互模式:

spring.shell.interactive.enabled=true

内容的提问来源于stack exchange,提问作者Coov Show

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:46:17