我试图了解docker compose中的COMMAND选项.在我当前的docker-compose.yml中,我启动了韵律泊坞窗映像(https://github.com/prosody/prosody-docker),我想在容器实际启动时创建一个用户列表.
容器的文档说明可以使用LOCAL,DOMAIN和PASSWORD环境选项创建用户,但这只是一个用户.我需要一个用户列表.
当阅读互联网上的一些东西时,似乎使用命令选项我应该能够在启动或运行容器中执行命令.
xmpp:
image: prosody/prosody
command: prosodyctl register testuser localhost testpassword
ports:
- "5222:5222"
- "127.0.0.1:5347:5347"
但这似乎不起作用,我检查使用docker exec -it< imageid>运行容器bash但是没有创建用户.
是否可以使用docker-compose在已启动的容器上执行命令,还是有其他选项?
docker run debian echo "hello world"
该命令被解释为图像的ENTRYPOINT的参数,在debian的情况下是/ bin / bash.对于您的图像,它将传递给this script.查看该脚本,您的命令将被传递给shell.我希望您传递的任何命令都能成功运行,但是一旦命令完成,容器就会退出.请注意,默认命令在Dockerfile中设置为CMD [“prosodyctl”,“start”],这可能是启动服务器的长时间运行过程.
我不确定Prosody是如何工作的(甚至是它是什么),但我认为你可能想要在一个包含用户的配置文件中映射,或者设置一个数据容器来保持你的配置.第一个解决方案意味着添加如下内容:
volumes:
- my_prosodoy_config:/etc/prosody
到docker-compose文件,其中my_prosody_config是一个包含配置文件的目录.
第二种解决方案可能涉及首先创建一个数据容器,如:
docker run -v /etc/prosody -v /var/log/prosody --name prosody-data prosody-docker echo "Prosody Data Container"
(回应应该完成,留下一个已经停止的容器,其中包含为配置和日志设置的卷.请确保您不会意外停靠此容器!)
volumes_from:
- prosody-data
希望您可以像以前一样通过运行docker exec来添加用户,然后在命令行运行prosodyctl register.但这取决于韵律和图像的表现.