无法与上面有 Java 进程的 Docker 控制台分离

Cannot detach from Docker console with Java process on it

我无法从 Docker 容器中分离出来。

Docker定义容器的文件:

FROM adoptopenjdk/openjdk16:debian
WORKDIR /app
STOPSIGNAL SIGTERM
RUN apt-get update && apt-get install -y curl && apt clean
CMD curl -so server.jar https://ci.tivy.ca/job/Airplane-1.17/lastSuccessfulBuild/artifact/launcher-airplane.jar && java -jar server.jar

构建容器:docker build -t minecraft .

docker-编写文件:

version: "3.7"
services:
  mc:
    container_name: mc
    ports:
      - 25565:25565
    image: minecraft
    volumes:
      - type: bind
        source: /root/mc
        target: /app

启动容器:docker-compose up mc

我尝试使用 docker attach mc 连接到控制台,它有效。但我并非无法脱离屏幕。 Ctrl+C 无效。 Ctrl+P 和 Ctrl+Q 不起作用。写入 stop(将停止 java 进程的命令)不起作用

我尝试使用 docker attach --detach-keys="ctrl-d" mc 进行附加,但无法正常工作

Java 进程永无止境

找到修复自己。需要插入 stdin_open 和 ttyin docker-compose 文件。新 docker-compose.yml:

 version: "3.7"
 services:
  mc:
    container_name: mc
    ports:
      - 25565:25565
    image: minecraft
    volumes:
      - type: bind
        source: /root/mc
        target: /app
    stdin_open: true
    tty: true

由于 Whosebug 规则,将在两天内将此答案设置为解决方案