有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 启动一个应用程序并与其交互。
我尝试过:
docker compose up -d docker exec -it container_id /bin/bash
但这让我可以访问容器的终端,而不是应用程序的终端。因此,必须手动复制“java Hello”命令
docker-compose logs container_id
但这不允许我输入文字
更改docker_compose.yml
version: "3.0.0"
name: app
services:
mav:
build: .
stdin_open: true
tty: true
但这让我在文本入口点留下了一个锁定的控制台
尝试:
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