Docker中的Bitcoinj OverlappingFileLockException组成

时间:2019-05-04 19:33:37

标签: java docker docker-compose filesystems

我正在docker compose中测试一个带有两个钱包的Bitcoinj应用程序。一个正确启动,第二个抛出Caused by: java.io.IOException: org.bitcoinj.store.BlockStoreException: java.nio.channels.OverlappingFileLockException

钱包和SPV文件安装在每个docker容器中,并且位于工作空间根目录./docker-volumes/wallet-app/..../docker-volumes/wallet-test/...中。

据我了解,当同一JVM尝试多次锁定同一文件时,应该抛出OverlappingFileLockException。在我的情况下,当2个容器看似将2个不同的文件锁定在不同目录中时,会抛出该异常,因此这似乎是docker compose问题,而不是Bitcoinj或其他代码。

我的卷在docker-compose.yml中分别安装为- ./docker-volumes/wallet-app:/wallet-app- ./docker-volumes/wallet-test:/wallet-test

其中一个钱包均可正确启动。

使用docker-compose restart wallet-...重新启动崩溃的容器几次后-它开始正常,我可以运行测试。

我怀疑这与卷挂有关(尽管我的容器仍应该在2个单独的JVM中运行,我想像中),但是在Docker文档中找不到特别有用的东西。任何提示将不胜感激。谢谢。

编辑: 相关的docker-compose.yml服务

version: '3'
services:

  listener:
    image: listener:0.1
    environment:
    - NOTIFIER_URL=http://notifications:9000
    - COIN_NET=test
    - WALLET_PATH=/wallet
    - MONGO_HOST=mongo
    - MONGO_PORT=27017
    - MONGO_DB=test_db
    - RMQ_HOST=rabbit
    - RMQ_PORT=5672
    - RMQ_USERNAME=user
    - RMQ_PASSWORD=password
    - RMQ_ROUTING=event_producer
    - RMQ_EXCHANGE=amq.direct
    volumes:
    - ./docker-volumes/wallet-app:/wallet
    depends_on:
    - mongo
    - notifications
    - rabbit

  listener-test:
    image: test:0.1
    volumes:
    - ./docker-volumes/wallet-test:/wallet-test

0 个答案:

没有答案