Docker在启动容器上编写并执行命令
我试图了解docker compose中的COMMAND选项.在我当前的docker-compose.yml中,我启动了韵律泊坞窗映像(https://github.com/prosody/prosody-docker),我想在容器实际启动时创建一个用户列表. 容器的文档说明可以使用LOCAL,DOMAIN和PASSWORD环境选项创建用户,但这只是一个用户.我需要一个用户列表. 当阅读互联网上的一些东西时,似乎使用命令选项我应该能够在启动或运行容器中执行命令.
但这似乎不起作用,我检查使用docker exec -it< imageid>运行容器bash但是没有创建用户. 是否可以使用docker-compose在已启动的容器上执行命令,还是有其他选项? 最佳答案
COMMAND指令与docker run命令结束时传递的指令完全相同,例如:echo“hello world”:
该命令被解释为图像的ENTRYPOINT的参数,在debian的情况下是/ bin / bash.对于您的图像,它将传递给this script.查看该脚本,您的命令将被传递给shell.我希望您传递的任何命令都能成功运行,但是一旦命令完成,容器就会退出.请注意,默认命令在Dockerfile中设置为CMD [“prosodyctl”,“start”],这可能是启动服务器的长时间运行过程. 我不确定Prosody是如何工作的(甚至是它是什么),但我认为你可能想要在一个包含用户的配置文件中映射,或者设置一个数据容器来保持你的配置.第一个解决方案意味着添加如下内容:
到docker-compose文件,其中my_prosody_config是一个包含配置文件的目录. 第二种解决方案可能涉及首先创建一个数据容器,如:
(回应应该完成,留下一个已经停止的容器,其中包含为配置和日志设置的卷.请确保您不会意外停靠此容器!) 然后在docker-compose文件中添加:
希望您可以像以前一样通过运行docker exec来添加用户,然后在命令行运行prosodyctl register.但这取决于韵律和图像的表现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |