无法在 docker 中退出 Python 脚本一段时间为 True 并且 运行 带有 -u 选项
Unable to exit Python script in docker with a while True and run with -u option
文件:Dockerfile
From ubuntu:focal-20211006
RUN apt-get update
RUN apt-get -y install python3 python3-pip
RUN pip install asyncio
RUN pip install apscheduler==3.7.0
COPY test.py /home/testing/test.py
WORKDIR /home/testing
CMD python3 -u ./test.py
文件:test.py
import asyncio
async def main():
print('Comes to main')
if __name__ == '__main__':
try:
print('Comes to Main 1')
asyncio.ensure_future(main())
print('Comes to Main 2')
asyncio.get_event_loop().run_forever()
except (KeyboardInterrupt, SystemExit):
print('Comes to interrupt')
raise
命令:
sudo docker build -t test:test
sudo docker run test:test
无法在 ubuntu:20.04
上使用 ctrl+c 退出进程
如有任何帮助,我们将不胜感激
注意:如果我在 Dockerfile 中使用 CMD 到 CMD python3 ./test.py
(没有 -u 选项),则没有输出。并且使用 docker 和 docker-compose 无法附加
您需要 运行 您的 docker 处于交互式 tty 模式,以便 shell 连接到 docker。
sudo docker run -it test:test
文件:Dockerfile
From ubuntu:focal-20211006
RUN apt-get update
RUN apt-get -y install python3 python3-pip
RUN pip install asyncio
RUN pip install apscheduler==3.7.0
COPY test.py /home/testing/test.py
WORKDIR /home/testing
CMD python3 -u ./test.py
文件:test.py
import asyncio
async def main():
print('Comes to main')
if __name__ == '__main__':
try:
print('Comes to Main 1')
asyncio.ensure_future(main())
print('Comes to Main 2')
asyncio.get_event_loop().run_forever()
except (KeyboardInterrupt, SystemExit):
print('Comes to interrupt')
raise
命令:
sudo docker build -t test:test
sudo docker run test:test
无法在 ubuntu:20.04
上使用 ctrl+c 退出进程如有任何帮助,我们将不胜感激
注意:如果我在 Dockerfile 中使用 CMD 到 CMD python3 ./test.py
(没有 -u 选项),则没有输出。并且使用 docker 和 docker-compose 无法附加
您需要 运行 您的 docker 处于交互式 tty 模式,以便 shell 连接到 docker。
sudo docker run -it test:test