无法在Docker Compose中覆盖文件

7

我正在使用docker compose搭建Payara服务器,并需要覆盖domain.xml文件。目前我是通过以下方式实现的:

volumes: - './domain.xml:/opt/payara41/glassfish/domains/domain1/config/domain.xml' 但是,当我通过docker-compose up命令进行组合时,它始终显示无法将domain.xml重命名为domain.xml.bak。有没有办法让我获得覆盖它或确保文件重命名成功的权限?


为什么需要覆盖你明确挂载的东西? - Robert
我不想挂载它,我想复制它。但是我似乎找不到复制它的方法。 - Lieke
最好挂载一个配置文件夹,这样它就可以覆盖domain.xml文件了吗? - Lieke
是的,这是一个不错的解决方案。许多项目都采用这种方式。 - n2o
1个回答

6

类似这样的代码应该可以正常工作:

command: sh -c 'cp /tmp/domain.xml /opt/payara41/glassfish/domains/domain1/config/domain.xml && YOUR_PREVIOUS_COMMAND'
volumes:
   - ./domain.xml:/tmp/domain.xml

如果是脚本,可以编辑您当前的command(或CMD),在其前面添加copy


编辑:此方法非常方便和简洁。

command: sh /run-from-compose.sh
volumes:
   - ./domain.xml:/tmp/domain.xml
   - ./run-from-compose.sh:/run-from-compose.sh

run-from-compose.sh:

#!/bin/sh
cp /tmp/domain.xml /opt/payara41/glassfish/domains/domain1/config/domain.xml

YOUR_PREVIOUS_COMMAND

您不需要修改图片,只需挂载一个充当command的自定义脚本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接