Access mode "server" appears to still make request from browser

Hi there! I recently started using Grafana and I’m not exactly a pro when it comes to HTTP based services so hopefully this will be an easy question to answer.

My setup is like this. I have a single Docker container, within which runs InfluxDB on *:8086 and Grafana on *:3000. Both of these ports are exposed to the host with the docker run options -p 3000:3000 -p 8086:8086. Grafana is configured to use the InfluxDB source with the following provisioning file:

apiVersion: 1    
    
datasources:    
- name: InfluxDB    
  type: influxdb    
  isDefault: true    
  database: mydb    
  url: http://localhost:8086    
  jsonData:    
    httpMode: GET

Since I haven’t changed the access mode here, it defaults to “Server”. Having read the Grafana docs, my understanding is that this setting causes the Grafana server - which is running in the same container as InfluxDB - to perform the request to localhost:8086. In other words, the request should be routed completely within / local to the container. However, when I test this by running the Docker container on one machine and accessing Grafana from a different machine, this doesn’t work. I notice that if I spin up an InfluxDB on the browser machine, that Grafana will then connect to that local instance. Based on my understanding, this is the behavior I expect from “Browser”. Now, back in the container, if I change the url in the provisioning file to the hostname of the docker host, then when I hit Grafana from my other machine, it connects just fine (as would be expected from the “Browser” setting).

What am I not understanding here?

Solved it.

When using datasource provisioning, you must specify the access field or the datasource will not work. The webapp will still show Server but underneath it actually uses Browser. This is pretty confusing since the default from the web interface is Server

Working config:

apiVersion: 1    
    
datasources:    
- name: InfluxDB    
  type: influxdb    
  access: proxy         <------------
  isDefault: true    
  database: mydb    
  url: http://localhost:8086    
  jsonData:    
    httpMode: GET

Issue: https://github.com/grafana/grafana/issues/21398