160 lines
5.2 KiB
Markdown
160 lines
5.2 KiB
Markdown
---
|
|
title: Install InfluxDB using Docker Compose
|
|
description: Use Docker Compose and secrets to install and set up InfluxDB OSS.
|
|
menu:
|
|
influxdb_v2:
|
|
name: Use Docker Compose
|
|
parent: Install InfluxDB
|
|
weight: 2
|
|
influxdb/v2/tags: [install]
|
|
related:
|
|
- /influxdb/v2/install/
|
|
- /influxdb/v2/reference/cli/influx/auth/
|
|
- /influxdb/v2/reference/cli/influx/config/
|
|
- /influxdb/v2/reference/cli/influx/
|
|
- /influxdb/v2/admin/tokens/
|
|
---
|
|
|
|
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`](https://docs.docker.com/compose/use-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](/influxdb/v2/admin/users/).
|
|
- `DOCKER_INFLUXDB_INIT_PASSWORD_FILE`: the container's path to the file that
|
|
contains the password for your initial [user](/influxdb/v2/admin/users/).
|
|
- `DOCKER_INFLUXDB_INIT_ADMIN_TOKEN_FILE`: the container's path to the file that
|
|
contains a token to use for your initial
|
|
[Operator token](/influxdb/v2/admin/tokens/#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](https://www.docker.com/get-started/) for your system.
|
|
|
|
2. Copy the following `compose.yaml` into your project directory.
|
|
|
|
```yml
|
|
# 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:
|
|
```
|
|
|
|
3. For each secret in `compose.yaml`, create a file that contains the secret
|
|
value--for example:
|
|
|
|
- `~/.env.influxdb2-admin-username`:
|
|
|
|
```text
|
|
admin
|
|
```
|
|
|
|
- `~/.env.influxdb2-admin-password`:
|
|
|
|
```text
|
|
MyInitialAdminPassword
|
|
```
|
|
|
|
- `~/.env.influxdb2-admin-token`:
|
|
|
|
```text
|
|
MyInitialAdminToken0==
|
|
```
|
|
|
|
4. To set up and run InfluxDB, enter the following command in your
|
|
terminal:
|
|
|
|
<!--pytest.mark.skip-->
|
|
|
|
```sh
|
|
docker compose up influxdb2
|
|
```
|
|
|
|
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:
|
|
|
|
```yaml
|
|
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
|
|
```
|
|
|
|
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](/influxdb/v2/admin/tokens/#operator-token)_, and then
|
|
logs to stdout. You can view the InfluxDB UI at <http://localhost:8086>.
|
|
|
|
{{% warn %}}
|
|
|
|
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.
|
|
|
|
{{% /warn %}}
|
|
|
|
### 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](/influxdb/v2/install/?t=Docker#run-influxdb-cli-commands-in-a-container) 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](https://docs.docker.com/reference/cli/docker/container/cp/).
|
|
|
|
For more InfluxDB and Docker configuration options,
|
|
see the [`influxdb` Docker Hub image](https://hub.docker.com/_/influxdb)
|
|
documentation.
|