Docker:如何对从终端获取输入的控制台应用程序进行容器化

时间:2019-03-10 03:49:26

标签: python docker dockerfile

我正在使用流行的Docker技术,只是从头开始。首先,我想先将控制台应用程序容器化,然后逐渐移至Web应用程序等更复杂的应用程序。

我已经成功地将“ hello world”应用容器化,该应用将在终端上显示一句话。但是,当我尝试略微升级该应用程序以使其能够从终端接收输入时,我遇到了麻烦。

文件夹中有2个文件,一个是app.py文件,另一个是Dockerfile。

app.py具有以下内容:(仅2行)

name = input("What is your name? ")
print ('hello ' + name + ' from a container!')

Dockerfile看起来像这样:

# Use an official Python runtime as a parent image
FROM python:3

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Run app.py when the container launches
CMD ["python", "app.py"]

所以它们两个都非常简单。然后,我进入终端,导航到该文件夹​​,并通过以下方式构建一个容器:

docker build --tag=helloworld .

构建成功。但是一旦我尝试使用以下命令运行它:

docker run helloworld

我收到以下错误消息:

What is your name? Traceback (most recent call last):
File "app.py", line 3, in <module>
name = input("What is your name? ")
EOFError: EOF when reading a line

我该如何解决?

0 个答案:

没有答案