加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Docker在启动容器上编写并执行命令

发布时间:2020-12-16 03:38:52 所属栏目:安全 来源:网络整理
导读:我试图了解docker compose中的COMMAND选项.在我当前的docker-compose.yml中,我启动了韵律泊坞窗映像(https://github.com/prosody/prosody-docker),我想在容器实际启动时创建一个用户列表. 容器的文档说明可以使用LOCAL,DOMAIN和PASSWORD环境选项创建用户,但

我试图了解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在已启动的容器上执行命令,还是有其他选项?

最佳答案
COMMAND指令与docker run命令结束时传递的指令完全相同,例如:echo“hello world”:

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"

(回应应该完成,留下一个已经停止的容器,其中包含为配置和日志设置的卷.请确保您不会意外停靠此容器!)

然后在docker-compose文件中添加:

volumes_from:
   - prosody-data

希望您可以像以前一样通过运行docker exec来添加用户,然后在命令行运行prosodyctl register.但这取决于韵律和图像的表现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读