Search code examples
dockerpersistenceprometheus

How to persist data in Prometheus running in a Docker container?


I'm developing something that needs Prometheus to persist its data between restarts. Having followed the instructions

$ docker volume create a-new-volume
$ docker run \
    --publish 9090:9090 \
    --volume a-new-volume:/prometheus-data \
    --volume "$(pwd)"/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

I have a valid prometheus.yml in the right directory on the host machine and it's being read by Prometheus from within the container. I'm just scraping a couple of HTTP endpoints for testing purposes at the moment.

But when I restart the container it's empty, no data from the previous run. What am I missing from my docker run ... command to persist the data into the a-new-volume volume?


Solution

  • Use the default data dir, which is /prometheus. To do that, use this line instead of what you have in your command:

    ...
    --volume a-new-volume:/prometheus \
    ...
    

    Found here: https://github.com/prometheus/prometheus/blob/master/Dockerfile

    Surprisingly is not mentioned in the image docs