【问题标题】:Running a command in a Docker container with variables在带有变量的 Docker 容器中运行命令
【发布时间】:2020-11-18 09:20:34
【问题描述】:

我正在使用 docker-compose 类型的场景。我想每晚为 partkeepr 备份数据库。我可以通过在容器中执行docker exec -it docker-partkeer_database_1 bash 并运行mysqldump 命令来获得一个bash shell,但我无法将它作为docker exec 类型的函数成功运行。

我运行docker exec -it docker-partkeepr_database_1 bash -c mysqldump --databases partkeepr -upartkeepr -pUSERPASSWORD  > /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql

当我已经在容器中使用 bash shell 但不在容器之外时,最后的日期部分工作得很好。我可以在没有日期部分的情况下运行所写的命令,但我需要日期,所以我可以有多个备份。

-bash: /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql: No such file or directory 的系统错误。

有什么想法吗?

【问题讨论】:

  • 您在主机上使用什么操作系统?如果你只是在主机上运行date +%Y-%m-%d-%H.%M.%S,你会得到什么?请注意,> 之后的任何内容都不会在容器内运行,而是在主机上运行,​​因此为了使其正常运行,date 必须是主机上的工作命令,而不仅仅是容器

标签: bash docker exec


【解决方案1】:

我找到了我的问题的答案。我没有在“”中的 bash -c 之后包装命令。一旦我运行下面的命令,它就像一个魅力。我只是想让每个人都知道我想出的答案。

docker exec -it docker-partkeepr_database_1 bash -c "mysqldump --databases partkeepr -upartkeepr - pUSERPASSWORD > /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多