Reputation: 1
I'm encountering an issue with Docker volumes not persisting data between container restarts when using Docker Compose. Here's a breakdown of my setup and the problem I'm facing:
Docker Compose Configuration:
version: '3.7'
services:
solrcloud1:
image: solr:8.11.2
container_name: solrcloud1
ports:
- "8981:8983"
environment:
- ZK_HOST=zk:2181
networks:
- solr
depends_on:
- zk
volumes:
- solrcloud1_data:/var/solr
solrcloud2:
image: solr:8.11.2
container_name: solrcloud2
ports:
- "8982:8983"
environment:
- ZK_HOST=zk:2181
networks:
- solr
depends_on:
- zk
volumes:
- solrcloud2_data:/var/solr
solrcloud3:
image: solr:8.11.2
container_name: solrcloud3
ports:
- "8983:8983"
environment:
- ZK_HOST=zk:2181
networks:
- solr
depends_on:
- zk
volumes:
- solrcloud3_data:/var/solr
zk:
image: zookeeper:3.6.2
container_name: zk
restart: always
hostname: zk
ports:
- 2181:2181
- 7001:7000
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zk:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
networks:
- solr
volumes:
- zk_data:/data
networks:
solr:
volumes:
solrcloud1_data:
external: false
solrcloud2_data:
external: false
solrcloud3_data:
external: false
zk_data:
external: false
I confirmed that the volumes are creating:
$ docker volume ls
DRIVER VOLUME NAME
local 1zk_3sc_solrcloud1_data
local 1zk_3sc_solrcloud2_data
local 1zk_3sc_solrcloud3_data
local 1zk_3sc_zk_data
local 8a1dadc9debf247e3b5b11d64367438806ac839e9bf99566916a473110782f80
local 15e8ec0fb6052d0458d9f1bba9812326a0eccfe844d75cb7fbf0019ab1cc03f1
local a242b48bedc509504825dcf9ec5d300692282a80cb87bbb0f694c67c2ad969f2
local b8183473dd64a163dc91c6eb9d878675344b6655fd766837fe92e1c1f1381060
Issue:
What could be causing this issue, and how can I ensure that my Docker volumes correctly persist data between container restarts?
Any insights or suggestions would be greatly appreciated. Thank you in advance!
Upvotes: 0
Views: 416
Reputation: 1
By using external: false
in your docker-compose file, it's telling docker-compose to manage those volumes so that when the container using the volumes is stopped (docker-compose down), the volume is removed. If you want the volumes and data to persist, you need to use external: true
and create the volumes using docker volume create.
Re-using existing volume with docker compose
Upvotes: 0