Python Docker:如何将接收终端输入的控制台应用程序容器化
我在玩流行的Docker技术,从零开始。首先,我希望将控制台应用程序容器化,然后逐步转向更复杂的应用程序,如web应用程序等 我已经成功地包装了一个“hello world”应用程序,它将在终端上显示一个句子。然而,当我尝试稍微升级应用程序以便它可以从终端接收输入时,我遇到了麻烦 文件夹中有两个文件,一个是app.py文件,另一个是Dockerfile app.py包含以下内容:(仅2行) Dockerfile如下所示:Python Docker:如何将接收终端输入的控制台应用程序容器化,python,docker,dockerfile,Python,Docker,Dockerfile,我在玩流行的Docker技术,从零开始。首先,我希望将控制台应用程序容器化,然后逐步转向更复杂的应用程序,如web应用程序等 我已经成功地包装了一个“hello world”应用程序,它将在终端上显示一个句子。然而,当我尝试稍微升级应用程序以便它可以从终端接收输入时,我遇到了麻烦 文件夹中有两个文件,一个是app.py文件,另一个是Dockerfile app.py包含以下内容:(仅2行) Dockerfile如下所示: # Use an official Python runtime as a
# 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
你叫什么名字?回溯(最近一次呼叫最后一次):
文件“app.py”,第3行,在
name=输入(“你叫什么名字?”)
EOF:读取一行时的EOF
如何修复它?将参数
-ti
添加到docker运行中@Klaus D。什么是-ti选项?我参考了此文档,但无法找到此选项的解释。使用短的单字母参数,-ti
等于-it
和-I-t
@Klaus D。好的。所以-我可以帮你把STDIN打开。但是什么是不能做的呢?这个链接提到它可以分配一个伪TTY,但是在这个上下文中伪TTY是什么意思呢?
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