如何在Docker容器中覆盖文件?解决ActiveMQ Artemis启动报错
解决ActiveMQ Artemis Docker启动时login.config已存在的问题
你的Docker Compose配置如下:
services: artemis: image: <artemis-image> ports: - "8161:8161" - "61616:61616" environment: ARTEMIS_USER: artemis ARTEMIS_PASSWORD: "artemis" volumes: - artemis:/app/artemis/brokers
执行docker-compose up时出现报错:
Creating ActiveMQ Artemis instance at: /app/artemis/brokers/drpbroker The file 'drpbroker/etc/login.config' already exists. Use --force to overwrite.
解决方案
方案1:删除现有卷(无需保留数据)
如果不需要保留artemis卷里的现有数据,直接删除卷后重新启动即可:
docker-compose down -v docker-compose up -d
-v参数会删除Docker Compose中定义的所有命名卷,重新启动时容器会生成全新的Artemis实例文件。
方案2:修改配置添加--force参数(保留数据)
如果需要保留卷中的现有数据,修改Docker Compose配置,给Artemis容器添加启动命令--force,强制覆盖已存在的配置文件:
services: artemis: image: <artemis-image> ports: - "8161:8161" - "61616:61616" environment: ARTEMIS_USER: artemis ARTEMIS_PASSWORD: "artemis" volumes: - artemis:/app/artemis/brokers command: ["--force"]
修改后重新执行docker-compose up -d即可。
方案3:手动执行覆盖命令(保留数据)
先通过临时容器执行--force命令覆盖现有文件,再启动服务:
docker run --rm -v artemis:/app/artemis/brokers <artemis-image> --force docker-compose up -d
内容的提问来源于stack exchange,提问作者AbrA
相关产品推荐
相关产品推荐

