Docker中连续的空控制台input

我正在尝试在Docker中运行Go控制台程序。 一切工作正常,除了我采取控制台input的部分。 不工作的部分是这样的:

func ListenTerminalInput() { reader := bufio.NewReader(os.Stdin) in := "" for in != "exit" { in, _ = reader.ReadString('\n') in = strings.Replace(in, "\n", "", -1) in = strings.ToLower(in) switch in { case "exit": continue case "status": PrintStatus() continue case "servers": PrintServers() continue case "clients": PrintClients() continue case "help": PrintHelp() continue default: fmt.Println("Please make a valid choice. Type \"help\" for help.") } } } 

这个代码像循环执行一样快地向控制台写入默认语句。 它只在Docker容器中执行时执行此操作,如果我在容器外部执行它,它工作正常。

这是我的Dockerfile

 FROM golang:1.9 MAINTAINER Hüseyin Atakan Çiçek EXPOSE 56566 EXPOSE 56567 VOLUME /shared WORKDIR /shared CMD ["go", "run", "server.go"]m 

这是我的docker-compose.yml

  version: '3' services: server: image: goserver ports: - "56566:56566" - "56567:56567" volumes: - ./shared:/shared 

这是我在Docker中运行时得到的输出

Docker执行控制台输出

这是我在Docker外部运行时得到的输出

正常执行控制台输出