Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker:如何将接收终端输入的控制台应用程序容器化_Python_Docker_Dockerfile - Fatal编程技术网

Python Docker:如何将接收终端输入的控制台应用程序容器化

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

我在玩流行的Docker技术,从零开始。首先,我希望将控制台应用程序容器化,然后逐步转向更复杂的应用程序,如web应用程序等

我已经成功地包装了一个“hello world”应用程序,它将在终端上显示一个句子。然而,当我尝试稍微升级应用程序以便它可以从终端接收输入时,我遇到了麻烦

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

app.py包含以下内容:(仅2行)

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
你叫什么名字?回溯(最近一次呼叫最后一次):
文件“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