无法在 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