无法覆盖 docker 撰写中的文件

Can't overwrite file in docker compose

我正在使用 docker compose 设置 payara 服务器,需要覆盖 domain.xml 文件。我目前正在通过

volumes: - './domain.xml:/opt/payara41/glassfish/domains/domain1/config/domain.xml' 但是当我用 docker-compose up 组合它时,它一直说它无法将 domain.xml 重命名为 domain.xml.bak。有什么办法可以获得覆盖它的权限或确保重命名有效吗?

像这样的东西应该可以工作:

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),如果它是一个脚本,在副本之前添加。


编辑:这个替代方案非常方便和优雅。

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

运行-来自-compose.sh:

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

YOUR_PREVIOUS_COMMAND

你不需要修改镜像,只需要挂载一个自定义脚本作为command