从 docker-compose 运行控制台应用程序 (CLI)

问题描述 投票:0回答:1

有java代码:

public class Hello {
    public static void main(String[] args) {
        System.out.println("Enter Name");

        Scanner reader = new Scanner(System.in);
        String s = reader.nextLine();
        System.out.println("Hello " + s);
    }
}

Dockerfile:

FROM openjdk:latest
COPY /src/Hello.java /app/
WORKDIR /app/
RUN ["javac", "Hello.java"]
ENTRYPOINT ["java", "Hello"]

docker_compose.yml

version: "3.0.0"

name: ar
services:
  app:
    build: .

我想从 docker-compose 启动一个应用程序并与其交互。

我尝试过:

  1. 进入终端应用程序

docker compose up -d docker exec -it container_id /bin/bash

但这让我可以访问容器的终端,而不是应用程序的终端。因此,必须手动复制“java Hello”命令

  1. 进入终端应用程序

docker-compose logs container_id 

但这不允许我输入文字

  1. 更改docker_compose.yml

     version: "3.0.0"
     name: app
     services:
       mav:
         build: .
         stdin_open: true
         tty: true
    

但这让我在文本入口点留下了一个锁定的控制台

  1. 更改 docker-compose 版本
java docker-compose command-line-interface
1个回答
0
投票

尝试:

set -e # Exit on any error

container_id=<YOUR_CONTAINER_ID>

docker-compose up -d 

until [ "`docker inspect -f {{.State.Running}} ${container_id}`"=="true" ]; do
    sleep 1
done

docker exec -it ${container_id} /bin/bash
© www.soinside.com 2019 - 2024. All rights reserved.