简体   繁体   English

在带有变量的 Docker 容器中运行命令

[英]Running a command in a Docker container with variables

I am using a docker-compose type of scenario.我正在使用 docker-compose 类型的场景。 I would like to back up the database for partkeepr on a nightly basis.我想每晚为 partkeepr 备份数据库。 I can get a bash shell by doing a docker exec -it docker-partkeer_database_1 bash into the container and run the mysqldump command just fine but I can't run it successfully as a docker exec type of function.我可以通过在容器中docker exec -it docker-partkeer_database_1 bash并运行mysqldump命令来获得 bash shell,但我无法将其作为docker exec类型成功运行

I run 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 .我运行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

That date part on the end works just fine when I already have gotten in with a bash shell in the container but not outside of it.当我已经在容器中使用 bash shell 而不是在容器外部时,最后的日期部分工作得很好。 I can run the command as written without the date part just fine but I need the date so I can have multiple backups.我可以运行没有日期部分的命令,但我需要日期,所以我可以有多个备份。

The system errors with -bash: /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql: No such file or directory . -bash: /var/lib/mysql/backup/partkeeprsql.$(date +%Y-%m-%d-%H.%M.%S).sql: No such file or directory

Have any ideas?有什么想法吗?

I found out the answer to my question.我找到了问题的答案。 I didn't wrap the command after the bash -c in ""'s.我没有将 bash -c 之后的命令包装在“”中。 Once I ran the command below it worked like a charm.一旦我运行下面的命令,它就像一个魅力。 I just wanted everyone to know the answer that I figured out.我只是想让每个人都知道我想出的答案。

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" docker exec -it docker-partkeepr_database_1 bash -c "mysqldump --databases partkeepr -upartkeepr - pUSERPASSWORD > /var/lib/mysql/backup/partkeeprsql.$(日期+%Y-%m-%d-%H.%M .%S).sql"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM