【问题标题】:re-run Python script in started in docker-compose with MySQL server running在运行 MySQL 服务器的情况下,在 docker-compose 中重新运行 Python 脚本
【发布时间】:2020-05-20 21:49:16
【问题描述】:

使用docker compose,我为我的 MySQL DB 创建了一个容器,并为我的 Python 脚本创建了一个容器。当我使用命令 docker compose up 时,我的图像是为我的 Python 应用程序容器和我的 MySQL DB 容器构建的,并且运行 python 脚本。执行后,由于 MySQL 服务器仍在运行并且我的脚本已完成执行,因此 shell 会挂起。如何在我的脚本运行后停止 MySQL 服务器,或者在 MySQL 服务器继续运行时重新运行我的脚本?

【问题讨论】:

    标签: python mysql docker


    【解决方案1】:

    运行docker-compose up 时,您当前的shell 将显示来自docker-compose.yaml 文件中定义的所有容器的所有日志。此外,如果您在 MacOS 中使用cmd + c 终止命令,所有容器都将停止运行。

    因此,这给您的印象是,shell 只是挂起,而一切仍在正常运行。

    在这种情况下你想要的是让容器继续在后台运行 (detached mode)

    docker-compose up --detach
    

    MySQL 服务器现在将继续运行,直到您使用 docker-compose down 停止它。

    【讨论】:

    • 谢谢。在这种情况下,我如何在需要时(例如每 24 小时)重新运行我的脚本?我每次都需要docker-compose up还是有更好的选择?
    • 您最好的选择是 1) 将带有脚本的容器设置为 restart: always,以便在 docker 启动时它始终处于启动状态。 2)将entrypointcommand设置为tail -f /dev/null,这样容器就不会中途终止。 3) 在 docker 容器内安装 cronjob 并将其配置为每 24 小时运行一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多