【问题标题】:How to handle prompt in Docker Exec如何在 Docker Exec 中处理提示
【发布时间】:2022-11-02 22:47:55
【问题描述】:

我尝试执行以下行:

docker exec --user www-data nextcloud_docker php /var/www/html/occ db:convert-filecache-bigint

返回提示:

This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n]

不幸的是 docker exec 命令结束(返回到 shell),我无法启动 occ 命令。

我该如何解决这个问题?

谢谢。

【问题讨论】:

    标签: docker exec nextcloud


    【解决方案1】:

    您可以尝试在 docker 命令上设置-i 标志并将“y”输入其中,如下所示

    echo y | docker exec -i --user www-data nextcloud_docker php /var/www/html/occ db:convert-filecache-bigint
    

    或者您可以像这样使用 -it 标志完全交互地运行命令

    docker exec -it --user www-data nextcloud_docker php /var/www/html/occ db:convert-filecache-bigint
    

    【讨论】:

    • 那没有用。它仍然返回到外壳。
    • 您可以尝试完全交互地运行它,就像我添加到我的答案中一样
    【解决方案2】:

    occ 有一个 -n 开关。 我从 cron 运行它,包括更新。我在容器内的 /home/update-nextcloud-inside-container.sh 中有这些行: #!/bin/bash 日期 sed -i 's~www-data:/var/www:/usr/sbin/nologin~www-data:/var/www:/bin/bash~g' /etc/passwd su -c "cd /var/www/nextcloud; php /var/www/nextcloud/updater/updater.phar --no-interaction" www-data su -c "cd /var/www/nextcloud; ./occ db:add-missing-indices -n" www-data su -c "cd /var/www/nextcloud; ./occ db:convert-filecache-bigint -n" www-data sed -i s~www-data:/var/www:/bin/bash~www-data:/var/www:/usr/sbin/nologin~g /etc/passwd

    并且主机 cron 启动一个包含这些行的脚本: ActiveContainer=$(/home/myusername/bin/lsdocker.sh | grep next) 日期 docker exec -i ${ActiveContainer} /home/update-nextcloud-inside-container.sh

    我现在看到我错过了让实例脱机以运行转换文件缓存。我得补充一下。

    【讨论】:

      最近更新 更多