InfluxDB image do not persist data in docker volume (docker-compose STACK)

Hi,

I’m new to docker and containers, I have this docker-compose.yml that configure my stack.
The issue that I’m facing is that InfluxDB it’s not persiting data into ‘/var/lib/influxdb’ in case of a restart/power outage.
Once the container get up and running again, all the data is gone, and I have to create the buckets and the credentials for admin user again.
The other 3 containers on the stack persist data on the same scenario.
Can you advise me on what could be wrong with this .yml file about influxDB configuration?
How do I solve this and get influxDB to persist data?
also, is there a way to save influxDB logs to a volume?

version: '3'

services:
  emqx:
    image: emqx/emqx
    container_name: emqx
    networks:
      ming_network:
        ipv4_address: 172.20.0.2
    ports:
      - "1883:1883"
      - "8083:8083"
      - "8883:8883"
      - "18083:18083"
    environment:
      - EMQX_NAME=mybroker
    restart: always
    volumes:
      - emqx_data:/opt/emqx/data
      - emqx_log:/opt/emqx/log
      - emqx_etc:/opt/emqx/etc

  influxdb:
    image: influxdb:latest
    container_name: influxdb
    networks:
      ming_network:
        ipv4_address: 172.20.0.3
    ports:
      - "8086:8086"
    restart: always
    volumes:
      - influxdb_data:/var/lib/influxdb

  nodered:
    image: nodered/node-red
    container_name: nodered
    networks:
      ming_network:
        ipv4_address: 172.20.0.4
    ports:
      - "1880:1880"
    restart: always
    volumes:
      - nodered_data:/data

  grafana:
    image: grafana/grafana
    container_name: grafana
    networks:
      ming_network:
        ipv4_address: 172.20.0.5
    ports:
      - "3000:3000"
    restart: always
    volumes:
      - grafana_data:/var/lib/grafana

networks:
  ming_network:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/16

volumes:
  emqx_data:
  emqx_log:
  emqx_etc:
  influxdb_data:
  nodered_data:
  grafana_data:

Thanks.

From what you’ve shared, it looks like the InfluxDB service is using a volume mapped to /var/lib/influxdb inside the container. This should be the correct location for data persistence for InfluxDB.

Let’s address the problems one by one:

  1. InfluxDB Data Persistence:
  • Ensure the volume influxdb_data is created and there’s no error during its creation.
  • Make sure you’re not inadvertently deleting the influxdb_data volume. Ensure that you’re not running docker-compose down -v or any other command that might destroy the volume.
  • If you’re running an InfluxDB version that’s 2.x or newer, the data is stored in /var/lib/influxdb2. If you’re using this version, modify your volume mapping like this:

yamlCopy code

volumes:
  - influxdb_data:/var/lib/influxdb2
  1. Saving InfluxDB Logs to a Volume:
  • InfluxDB logs are, by default, sent to stdout and can be viewed with docker logs <container_name>. But if you want to store them inside a volume, you’d typically have to modify the InfluxDB configuration to send logs to a file and then map that file or directory to a volume. This isn’t directly supported by the standard InfluxDB Docker image without customization.
  • If you just want to persist the logs outside the container, consider redirecting the logs from docker logs to a file on the host system.
  1. General Suggestions:
  • Check the logs: Inspect the InfluxDB container logs with docker logs influxdb. This might provide hints if there’s any issue with the database initialization or any other problems.
  • Data Safety: Before making any changes, especially if you’ve important data, ensure you have backups.
  • Version Pinning: It’s generally a good practice to pin your images to specific versions rather than using latest. This ensures that you’re using a known, stable version, and it prevents unexpected behavior when the image is updated upstream.

In summary, the primary issue may lie in using the wrong directory for InfluxDB 2.x. If that’s the version you’re using, make sure you map to /var/lib/influxdb2. Always check the documentation for the specific version of the software you’re using to ensure you have the right paths and configurations.

Hi Anaisdg,

After replacing the data path to /var/lib/influxdb2 the issue was solved after restarting the container.
thnaks.