Documentation

Install InfluxDB using Docker Compose

Use Docker Compose to install and set up InfluxDB v2, the time series platform is purpose-built to collect, store, process and visualize metrics and events.

When you use Docker Compose to create an InfluxDB container, you can use Compose secrets to control access to sensitive credentials such as username, password, and token and prevent leaking them in your docker inspect output.

The influxdb Docker image provides the following environment variables to use with Compose secrets:

  • DOCKER_INFLUXDB_INIT_USERNAME_FILE: the container’s path to the file that contains the username for your initial user.
  • DOCKER_INFLUXDB_INIT_PASSWORD_FILE: the container’s path to the file that contains the password for your initial user.
  • DOCKER_INFLUXDB_INIT_ADMIN_TOKEN_FILE: the container’s path to the file that contains a token to use for your initial Operator token. If you don’t specify an initial token, InfluxDB generates one for you.

Set up using Docker Compose secrets

Follow steps to set up and run InfluxDB using Docker Compose and secrets:

  1. If you haven’t already, install Docker Desktop for your system.

  2. Copy the following compose.yaml into your project directory.

    # compose.yaml
    services:
      influxdb2:
        image: influxdb:2
        ports:
          - 8086:8086
        environment:
          DOCKER_INFLUXDB_INIT_MODE: setup
          DOCKER_INFLUXDB_INIT_USERNAME_FILE: /run/secrets/influxdb2-admin-username
          DOCKER_INFLUXDB_INIT_PASSWORD_FILE: /run/secrets/influxdb2-admin-password
          DOCKER_INFLUXDB_INIT_ADMIN_TOKEN_FILE: /run/secrets/influxdb2-admin-token
          DOCKER_INFLUXDB_INIT_ORG: docs
          DOCKER_INFLUXDB_INIT_BUCKET: home
        secrets:
          - influxdb2-admin-username
          - influxdb2-admin-password
          - influxdb2-admin-token
        volumes:
          - type: volume
            source: influxdb2-data
            target: /var/lib/influxdb2
          - type: volume
            source: influxdb2-config
            target: /etc/influxdb2
    secrets:
      influxdb2-admin-username:
        file: ~/.env.influxdb2-admin-username
      influxdb2-admin-password:
        file: ~/.env.influxdb2-admin-password
      influxdb2-admin-token:
        file: ~/.env.influxdb2-admin-token
    volumes:
      influxdb2-data:
      influxdb2-config:
    
    • Copy
    • Fill window
  3. For each secret in compose.yaml, create a file that contains the secret value–for example:

    • ~/.env.influxdb2-admin-username:

      admin
      
      • Copy
      • Fill window
    • ~/.env.influxdb2-admin-password:

      MyInitialAdminPassword
      
      • Copy
      • Fill window
    • ~/.env.influxdb2-admin-token:

      MyInitialAdminToken0==
      
      • Copy
      • Fill window
  4. To set up and run InfluxDB, enter the following command in your terminal:

    docker compose up influxdb2
    
    • Copy
    • Fill window

At runtime, the influxdb image:

  1. Mounts secrets files from your host filesystem to /run/secrets/<SECRET_NAME> in the container.

  2. Assigns the environment variables to the specified files–for example:

    environment:
      DOCKER_INFLUXDB_INIT_USERNAME_FILE: /run/secrets/influxdb2-admin-username
      DOCKER_INFLUXDB_INIT_PASSWORD_FILE: /run/secrets/influxdb2-admin-password
      DOCKER_INFLUXDB_INIT_ADMIN_TOKEN_FILE: /run/secrets/influxdb2-admin-token
    
    • Copy
    • Fill window
  3. Retrieves the secrets from the mounted files and runs setup.

  4. Starts InfluxDB.

  5. Runs any custom initialization scripts mounted inside the container’s /docker-entrypoint-initdb.d/ path.

If successful, InfluxDB initializes the user, password, organization, bucket, and Operator token, and then logs to stdout. You can view the InfluxDB UI at http://localhost:8086.

Although Docker prevents inadvertently exposing secrets (for example, in docker inspect output), a user that has access to the running container’s filesystem can view the secrets.

Run InfluxDB CLI commands in a container

After you start a container using the influxdb Docker Hub image, you can use docker exec with the influx and influxd CLIs inside the container.

Manage files in mounted volumes

To copy files, such as the InfluxDB server config.yml file, between your local file system and a volume, use the docker container cp command.

For more InfluxDB and Docker configuration options, see the influxdb Docker Hub image documentation.


Was this page helpful?

Thank you for your feedback!


The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Read more

InfluxDB 3 Core and Enterprise are now in Beta

InfluxDB 3 Core and Enterprise are now available for beta testing, available under MIT or Apache 2 license.

InfluxDB 3 Core is a high-speed, recent-data engine that collects and processes data in real-time, while persisting it to local disk or object storage. InfluxDB 3 Enterprise is a commercial product that builds on Core’s foundation, adding high availability, read replicas, enhanced security, and data compaction for faster queries. A free tier of InfluxDB 3 Enterprise will also be available for at-home, non-commercial use for hobbyists to get the full historical time series database set of capabilities.

For more information, check out: