├── influxdb ├── test │ ├── .gitignore │ ├── cases │ │ ├── test-auto-setup-with-rp │ │ ├── test-auto-setup-user-scripts │ │ ├── common.sh │ │ ├── test-auto-setup-init-bind │ │ ├── test-custom-config │ │ ├── test-help │ │ ├── test-auto-setup-tls │ │ ├── test-auto-setup-custom-config-name │ │ ├── test-auto-upgrade-custom-config │ │ ├── test-auto-upgrade-user-scripts │ │ ├── test-auto-setup-no-rp │ │ ├── test-auto-setup-user-specified-token │ │ └── test-simple-boot │ └── test-2x-e2e.sh ├── 1.7 │ ├── meta │ │ ├── influxdb-meta.conf │ │ ├── alpine │ │ │ ├── influxdb-meta.conf │ │ │ ├── entrypoint.sh │ │ │ └── Dockerfile │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── influxdb.conf │ ├── alpine │ │ ├── influxdb.conf │ │ ├── entrypoint.sh │ │ ├── Dockerfile │ │ └── init-influxdb.sh │ ├── entrypoint.sh │ ├── data │ │ ├── influxdb.conf │ │ ├── alpine │ │ │ ├── influxdb.conf │ │ │ ├── entrypoint.sh │ │ │ ├── Dockerfile │ │ │ └── init-influxdb.sh │ │ ├── entrypoint.sh │ │ ├── Dockerfile │ │ └── init-influxdb.sh │ ├── Dockerfile │ └── init-influxdb.sh ├── 1.8 │ ├── meta │ │ ├── influxdb-meta.conf │ │ ├── alpine │ │ │ ├── influxdb-meta.conf │ │ │ ├── entrypoint.sh │ │ │ └── Dockerfile │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── influxdb.conf │ ├── alpine │ │ ├── influxdb.conf │ │ ├── entrypoint.sh │ │ ├── Dockerfile │ │ └── init-influxdb.sh │ ├── entrypoint.sh │ ├── data │ │ ├── influxdb.conf │ │ ├── alpine │ │ │ ├── influxdb.conf │ │ │ ├── entrypoint.sh │ │ │ ├── Dockerfile │ │ │ └── init-influxdb.sh │ │ ├── entrypoint.sh │ │ ├── Dockerfile │ │ └── init-influxdb.sh │ ├── Dockerfile │ └── init-influxdb.sh ├── 1.9 │ ├── meta │ │ ├── influxdb-meta.conf │ │ ├── alpine │ │ │ ├── influxdb-meta.conf │ │ │ ├── entrypoint.sh │ │ │ └── Dockerfile │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── influxdb.conf │ ├── entrypoint.sh │ ├── data │ │ ├── influxdb.conf │ │ ├── alpine │ │ │ ├── influxdb.conf │ │ │ ├── entrypoint.sh │ │ │ ├── Dockerfile │ │ │ └── init-influxdb.sh │ │ ├── entrypoint.sh │ │ ├── Dockerfile │ │ └── init-influxdb.sh │ └── init-influxdb.sh ├── 2.0 │ ├── default-config.yml │ ├── alpine │ │ ├── default-config.yml │ │ └── Dockerfile │ └── Dockerfile ├── 2.1 │ ├── default-config.yml │ ├── alpine │ │ ├── default-config.yml │ │ └── Dockerfile │ └── Dockerfile ├── manifest.json ├── README.md └── LICENSE ├── go.mod ├── kapacitor ├── 1.4 │ ├── kapacitor.conf │ ├── alpine │ │ ├── kapacitor.conf │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── entrypoint.sh │ └── Dockerfile ├── 1.5 │ ├── kapacitor.conf │ ├── alpine │ │ ├── kapacitor.conf │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── entrypoint.sh │ └── Dockerfile ├── 1.6 │ ├── kapacitor.conf │ ├── alpine │ │ ├── kapacitor.conf │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── entrypoint.sh │ └── Dockerfile ├── manifest.json ├── LICENSE └── README.md ├── telegraf ├── 1.18 │ ├── alpine │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── entrypoint.sh │ └── Dockerfile ├── 1.19 │ ├── alpine │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── entrypoint.sh │ └── Dockerfile ├── 1.20 │ ├── alpine │ │ ├── entrypoint.sh │ │ └── Dockerfile │ ├── entrypoint.sh │ └── Dockerfile ├── manifest.json ├── LICENSE └── README.md ├── chronograf ├── 1.6 │ ├── entrypoint.sh │ ├── alpine │ │ ├── entrypoint.sh │ │ └── Dockerfile │ └── Dockerfile ├── 1.7 │ ├── entrypoint.sh │ ├── alpine │ │ ├── entrypoint.sh │ │ └── Dockerfile │ └── Dockerfile ├── 1.8 │ ├── entrypoint.sh │ ├── alpine │ │ ├── entrypoint.sh │ │ └── Dockerfile │ └── Dockerfile ├── 1.9 │ ├── entrypoint.sh │ ├── alpine │ │ ├── entrypoint.sh │ │ └── Dockerfile │ └── Dockerfile ├── manifest.json └── README.md ├── dockerlib ├── Dockerfile ├── main.go ├── commands.go └── dockerlib │ ├── header.go │ ├── version_test.go │ └── version.go ├── .circleci └── config.yml └── circle-test.sh /influxdb/test/.gitignore: -------------------------------------------------------------------------------- 1 | tmp 2 | logs 3 | -------------------------------------------------------------------------------- /influxdb/1.7/meta/influxdb-meta.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | -------------------------------------------------------------------------------- /influxdb/1.8/meta/influxdb-meta.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | -------------------------------------------------------------------------------- /influxdb/1.9/meta/influxdb-meta.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | -------------------------------------------------------------------------------- /influxdb/1.7/meta/alpine/influxdb-meta.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | -------------------------------------------------------------------------------- /influxdb/1.8/meta/alpine/influxdb-meta.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | -------------------------------------------------------------------------------- /influxdb/1.9/meta/alpine/influxdb-meta.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/influxdata/influxdata-docker 2 | 3 | go 1.13 4 | 5 | require github.com/spf13/cobra v1.0.0 6 | -------------------------------------------------------------------------------- /influxdb/2.0/default-config.yml: -------------------------------------------------------------------------------- 1 | bolt-path: /var/lib/influxdb2/influxd.bolt 2 | engine-path: /var/lib/influxdb2/engine 3 | nats-port: 4222 4 | -------------------------------------------------------------------------------- /influxdb/2.1/default-config.yml: -------------------------------------------------------------------------------- 1 | bolt-path: /var/lib/influxdb2/influxd.bolt 2 | engine-path: /var/lib/influxdb2/engine 3 | nats-port: 4222 4 | -------------------------------------------------------------------------------- /influxdb/2.0/alpine/default-config.yml: -------------------------------------------------------------------------------- 1 | bolt-path: /var/lib/influxdb2/influxd.bolt 2 | engine-path: /var/lib/influxdb2/engine 3 | nats-port: 4222 4 | -------------------------------------------------------------------------------- /influxdb/2.1/alpine/default-config.yml: -------------------------------------------------------------------------------- 1 | bolt-path: /var/lib/influxdb2/influxd.bolt 2 | engine-path: /var/lib/influxdb2/engine 3 | nats-port: 4222 4 | -------------------------------------------------------------------------------- /influxdb/1.7/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | -------------------------------------------------------------------------------- /influxdb/1.8/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | -------------------------------------------------------------------------------- /influxdb/1.9/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | -------------------------------------------------------------------------------- /kapacitor/1.4/kapacitor.conf: -------------------------------------------------------------------------------- 1 | data_dir = "/var/lib/kapacitor" 2 | 3 | [replay] 4 | dir = "/var/lib/kapacitor/replay" 5 | 6 | [storage] 7 | boltdb = "/var/lib/kapacitor/kapacitor.db" 8 | -------------------------------------------------------------------------------- /kapacitor/1.5/kapacitor.conf: -------------------------------------------------------------------------------- 1 | data_dir = "/var/lib/kapacitor" 2 | 3 | [replay] 4 | dir = "/var/lib/kapacitor/replay" 5 | 6 | [storage] 7 | boltdb = "/var/lib/kapacitor/kapacitor.db" 8 | -------------------------------------------------------------------------------- /kapacitor/1.6/kapacitor.conf: -------------------------------------------------------------------------------- 1 | data_dir = "/var/lib/kapacitor" 2 | 3 | [replay] 4 | dir = "/var/lib/kapacitor/replay" 5 | 6 | [storage] 7 | boltdb = "/var/lib/kapacitor/kapacitor.db" 8 | -------------------------------------------------------------------------------- /influxdb/1.7/alpine/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | -------------------------------------------------------------------------------- /influxdb/1.8/alpine/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | -------------------------------------------------------------------------------- /kapacitor/1.4/alpine/kapacitor.conf: -------------------------------------------------------------------------------- 1 | data_dir = "/var/lib/kapacitor" 2 | 3 | [replay] 4 | dir = "/var/lib/kapacitor/replay" 5 | 6 | [storage] 7 | boltdb = "/var/lib/kapacitor/kapacitor.db" 8 | -------------------------------------------------------------------------------- /kapacitor/1.5/alpine/kapacitor.conf: -------------------------------------------------------------------------------- 1 | data_dir = "/var/lib/kapacitor" 2 | 3 | [replay] 4 | dir = "/var/lib/kapacitor/replay" 5 | 6 | [storage] 7 | boltdb = "/var/lib/kapacitor/kapacitor.db" 8 | -------------------------------------------------------------------------------- /kapacitor/1.6/alpine/kapacitor.conf: -------------------------------------------------------------------------------- 1 | data_dir = "/var/lib/kapacitor" 2 | 3 | [replay] 4 | dir = "/var/lib/kapacitor/replay" 5 | 6 | [storage] 7 | boltdb = "/var/lib/kapacitor/kapacitor.db" 8 | -------------------------------------------------------------------------------- /influxdb/1.7/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- influxd "$@" 6 | fi 7 | 8 | if [ "$1" = 'influxd' ]; then 9 | /init-influxdb.sh "${@:2}" 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /influxdb/1.8/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- influxd "$@" 6 | fi 7 | 8 | if [ "$1" = 'influxd' ]; then 9 | /init-influxdb.sh "${@:2}" 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /influxdb/1.9/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- influxd "$@" 6 | fi 7 | 8 | if [ "$1" = 'influxd' ]; then 9 | /init-influxdb.sh "${@:2}" 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /influxdb/1.7/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- influxd "$@" 6 | fi 7 | 8 | if [ "$1" = 'influxd' ]; then 9 | /init-influxdb.sh "${@:2}" 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /influxdb/1.8/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- influxd "$@" 6 | fi 7 | 8 | if [ "$1" = 'influxd' ]; then 9 | /init-influxdb.sh "${@:2}" 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /kapacitor/1.4/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- kapacitord "$@" 6 | fi 7 | 8 | KAPACITOR_HOSTNAME=${KAPACITOR_HOSTNAME:-$HOSTNAME} 9 | export KAPACITOR_HOSTNAME 10 | 11 | exec "$@" 12 | -------------------------------------------------------------------------------- /kapacitor/1.5/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- kapacitord "$@" 6 | fi 7 | 8 | KAPACITOR_HOSTNAME=${KAPACITOR_HOSTNAME:-$HOSTNAME} 9 | export KAPACITOR_HOSTNAME 10 | 11 | exec "$@" 12 | -------------------------------------------------------------------------------- /kapacitor/1.6/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- kapacitord "$@" 6 | fi 7 | 8 | KAPACITOR_HOSTNAME=${KAPACITOR_HOSTNAME:-$HOSTNAME} 9 | export KAPACITOR_HOSTNAME 10 | 11 | exec "$@" 12 | -------------------------------------------------------------------------------- /kapacitor/1.4/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- kapacitord "$@" 6 | fi 7 | 8 | KAPACITOR_HOSTNAME=${KAPACITOR_HOSTNAME:-$HOSTNAME} 9 | export KAPACITOR_HOSTNAME 10 | 11 | exec "$@" 12 | -------------------------------------------------------------------------------- /kapacitor/1.5/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- kapacitord "$@" 6 | fi 7 | 8 | KAPACITOR_HOSTNAME=${KAPACITOR_HOSTNAME:-$HOSTNAME} 9 | export KAPACITOR_HOSTNAME 10 | 11 | exec "$@" 12 | -------------------------------------------------------------------------------- /kapacitor/1.6/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- kapacitord "$@" 6 | fi 7 | 8 | KAPACITOR_HOSTNAME=${KAPACITOR_HOSTNAME:-$HOSTNAME} 9 | export KAPACITOR_HOSTNAME 10 | 11 | exec "$@" 12 | -------------------------------------------------------------------------------- /telegraf/1.18/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- telegraf "$@" 6 | fi 7 | 8 | if [ "$(id -u)" -ne 0 ]; then 9 | exec "$@" 10 | else 11 | exec su-exec telegraf "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /telegraf/1.19/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- telegraf "$@" 6 | fi 7 | 8 | if [ "$(id -u)" -ne 0 ]; then 9 | exec "$@" 10 | else 11 | exec su-exec telegraf "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /telegraf/1.20/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- telegraf "$@" 6 | fi 7 | 8 | if [ "$(id -u)" -ne 0 ]; then 9 | exec "$@" 10 | else 11 | exec su-exec telegraf "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /influxdb/1.7/data/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | 9 | [hinted-handoff] 10 | dir = "/var/lib/influxdb/hh" 11 | -------------------------------------------------------------------------------- /influxdb/1.8/data/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | 9 | [hinted-handoff] 10 | dir = "/var/lib/influxdb/hh" 11 | -------------------------------------------------------------------------------- /influxdb/1.9/data/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | 9 | [hinted-handoff] 10 | dir = "/var/lib/influxdb/hh" 11 | -------------------------------------------------------------------------------- /telegraf/1.18/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- telegraf "$@" 6 | fi 7 | 8 | if [ $EUID -ne 0 ]; then 9 | exec "$@" 10 | else 11 | exec setpriv --reuid telegraf --init-groups "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /telegraf/1.19/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- telegraf "$@" 6 | fi 7 | 8 | if [ $EUID -ne 0 ]; then 9 | exec "$@" 10 | else 11 | exec setpriv --reuid telegraf --init-groups "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /telegraf/1.20/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- telegraf "$@" 6 | fi 7 | 8 | if [ $EUID -ne 0 ]; then 9 | exec "$@" 10 | else 11 | exec setpriv --reuid telegraf --init-groups "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /influxdb/1.7/data/alpine/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | 9 | [hinted-handoff] 10 | dir = "/var/lib/influxdb/hh" 11 | -------------------------------------------------------------------------------- /influxdb/1.8/data/alpine/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | 9 | [hinted-handoff] 10 | dir = "/var/lib/influxdb/hh" 11 | -------------------------------------------------------------------------------- /influxdb/1.9/data/alpine/influxdb.conf: -------------------------------------------------------------------------------- 1 | [meta] 2 | dir = "/var/lib/influxdb/meta" 3 | 4 | [data] 5 | dir = "/var/lib/influxdb/data" 6 | engine = "tsm1" 7 | wal-dir = "/var/lib/influxdb/wal" 8 | 9 | [hinted-handoff] 10 | dir = "/var/lib/influxdb/hh" 11 | -------------------------------------------------------------------------------- /chronograf/1.6/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /chronograf/1.7/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /chronograf/1.8/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /chronograf/1.9/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /chronograf/1.6/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /chronograf/1.7/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /chronograf/1.8/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /chronograf/1.9/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- chronograf "$@" 6 | fi 7 | 8 | if [ "$1" = 'chronograf' ]; then 9 | export BOLT_PATH=${BOLT_PATH:-/var/lib/chronograf/chronograf-v1.db} 10 | fi 11 | 12 | exec "$@" 13 | -------------------------------------------------------------------------------- /influxdb/1.7/data/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | 6 | if [ "${1:0:1}" = '-' ]; then 7 | set -- influxd "$@" 8 | fi 9 | 10 | if [ "$1" = 'influxd' ]; then 11 | /init-influxdb.sh "${@:2}" 12 | fi 13 | 14 | exec "$@" 15 | -------------------------------------------------------------------------------- /influxdb/1.8/data/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | 6 | if [ "${1:0:1}" = '-' ]; then 7 | set -- influxd "$@" 8 | fi 9 | 10 | if [ "$1" = 'influxd' ]; then 11 | /init-influxdb.sh "${@:2}" 12 | fi 13 | 14 | exec "$@" 15 | -------------------------------------------------------------------------------- /influxdb/1.9/data/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | 6 | if [ "${1:0:1}" = '-' ]; then 7 | set -- influxd "$@" 8 | fi 9 | 10 | if [ "$1" = 'influxd' ]; then 11 | /init-influxdb.sh "${@:2}" 12 | fi 13 | 14 | exec "$@" 15 | -------------------------------------------------------------------------------- /influxdb/1.7/data/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | 6 | if [ "${1:0:1}" = '-' ]; then 7 | set -- influxd "$@" 8 | fi 9 | 10 | if [ "$1" = 'influxd' ]; then 11 | /init-influxdb.sh "${@:2}" 12 | fi 13 | 14 | exec "$@" 15 | -------------------------------------------------------------------------------- /influxdb/1.8/data/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | 6 | if [ "${1:0:1}" = '-' ]; then 7 | set -- influxd "$@" 8 | fi 9 | 10 | if [ "$1" = 'influxd' ]; then 11 | /init-influxdb.sh "${@:2}" 12 | fi 13 | 14 | exec "$@" 15 | -------------------------------------------------------------------------------- /influxdb/1.9/data/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | 6 | if [ "${1:0:1}" = '-' ]; then 7 | set -- influxd "$@" 8 | fi 9 | 10 | if [ "$1" = 'influxd' ]; then 11 | /init-influxdb.sh "${@:2}" 12 | fi 13 | 14 | exec "$@" 15 | -------------------------------------------------------------------------------- /kapacitor/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kapacitor", 3 | "maintainers": [ 4 | "Jonathan A. Sternberg (@jsternberg)", 5 | "j. Emrys Landivar (@docmerlin)" 6 | ], 7 | "versions": ["1.4", "1.5"], 8 | "architectures": [ 9 | "amd64", 10 | "arm32v7", 11 | "arm64v8" 12 | ], 13 | "variants": [ 14 | {"name": "alpine"} 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /dockerlib/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.9.2-stretch as builder 2 | COPY . /go/src/github.com/influxdata/influxdata-docker/dockerlib 3 | RUN set -xe && \ 4 | go get -d github.com/influxdata/influxdata-docker/dockerlib && \ 5 | go install github.com/influxdata/influxdata-docker/dockerlib 6 | 7 | FROM buildpack-deps:stretch-scm 8 | COPY --from=builder /go/bin/dockerlib /usr/bin/dockerlib 9 | ENTRYPOINT ["/usr/bin/dockerlib"] 10 | -------------------------------------------------------------------------------- /influxdb/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "influxdb", 3 | "versions": ["1.7", "1.8"], 4 | "architectures": [ 5 | "amd64", 6 | "arm32v7", 7 | "arm64v8" 8 | ], 9 | "variants": [ 10 | { 11 | "name": "alpine" 12 | }, 13 | { 14 | "name": "data" 15 | }, 16 | { 17 | "name": "data/alpine" 18 | }, 19 | { 20 | "name": "meta" 21 | }, 22 | { 23 | "name": "meta/alpine" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /chronograf/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chronograf", 3 | "maintainers": [ 4 | "Jonathan A. Sternberg (@jsternberg)", 5 | "Bucky Schwarz (@hoorayimhelping)", 6 | "Cody Shepherd (@codyshepherd)" 7 | ], 8 | "versions": ["1.6", "1.7", "1.8", "1.9"], 9 | "architectures": [ 10 | "amd64", 11 | "arm32v7", 12 | "arm64v8" 13 | ], 14 | "variants": [ 15 | {"name": "alpine"} 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /telegraf/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "telegraf", 3 | "maintainers": [ 4 | "David Reimschussel (@reimda)", 5 | "Josh Powers (@powersj)", 6 | "Mya Longmire (@MyaLongmire)" 7 | ], 8 | "versions": [ 9 | "1.18", 10 | "1.19", 11 | "1.20" 12 | ], 13 | "architectures": [ 14 | "amd64", 15 | "arm32v7", 16 | "arm64v8" 17 | ], 18 | "variants": [ 19 | { 20 | "name": "alpine" 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | workflows: 4 | version: 2 5 | ci: 6 | jobs: 7 | - build 8 | - test-influxdb: 9 | matrix: 10 | parameters: 11 | version: ["2.0", "2.1"] 12 | 13 | jobs: 14 | build: 15 | docker: 16 | - image: cimg/go:1.15.6 17 | steps: 18 | - checkout 19 | - setup_remote_docker 20 | - run: bash circle-test.sh 21 | 22 | test-influxdb: 23 | machine: true 24 | parameters: 25 | version: 26 | type: string 27 | enum: ["2.0", "2.1"] 28 | steps: 29 | - checkout 30 | - run: sudo apt-get update && sudo apt-get install -y jq 31 | - run: bash influxdb/test/test-2x-e2e.sh << parameters.version >> 32 | - store_artifacts: 33 | path: influxdb/test/logs 34 | destination: container-logs 35 | -------------------------------------------------------------------------------- /influxdb/1.7/meta/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | export INFLUXDB_META_CONFIG_PATH=${INFLUXDB_META_CONFIG_PATH:-/etc/influxdb/influxdb-meta.conf} 6 | 7 | if [ "${1:0:1}" = '-' ]; then 8 | set -- influxd-meta "$@" 9 | fi 10 | 11 | if [ "$1" = 'influxd-meta' ]; then 12 | shift 13 | if [ $# -gt 0 ]; then 14 | case $1 in 15 | config) 16 | shift 17 | set -- influxd-meta config -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 18 | ;; 19 | run) 20 | shift 21 | set -- influxd-meta run -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 22 | ;; 23 | -*) 24 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 25 | ;; 26 | *) 27 | set -- influxd-meta "$@" 28 | ;; 29 | esac 30 | else 31 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" 32 | fi 33 | fi 34 | 35 | exec "$@" 36 | -------------------------------------------------------------------------------- /influxdb/1.8/meta/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | export INFLUXDB_META_CONFIG_PATH=${INFLUXDB_META_CONFIG_PATH:-/etc/influxdb/influxdb-meta.conf} 6 | 7 | if [ "${1:0:1}" = '-' ]; then 8 | set -- influxd-meta "$@" 9 | fi 10 | 11 | if [ "$1" = 'influxd-meta' ]; then 12 | shift 13 | if [ $# -gt 0 ]; then 14 | case $1 in 15 | config) 16 | shift 17 | set -- influxd-meta config -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 18 | ;; 19 | run) 20 | shift 21 | set -- influxd-meta run -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 22 | ;; 23 | -*) 24 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 25 | ;; 26 | *) 27 | set -- influxd-meta "$@" 28 | ;; 29 | esac 30 | else 31 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" 32 | fi 33 | fi 34 | 35 | exec "$@" 36 | -------------------------------------------------------------------------------- /influxdb/1.9/meta/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | export INFLUXDB_META_CONFIG_PATH=${INFLUXDB_META_CONFIG_PATH:-/etc/influxdb/influxdb-meta.conf} 6 | 7 | if [ "${1:0:1}" = '-' ]; then 8 | set -- influxd-meta "$@" 9 | fi 10 | 11 | if [ "$1" = 'influxd-meta' ]; then 12 | shift 13 | if [ $# -gt 0 ]; then 14 | case $1 in 15 | config) 16 | shift 17 | set -- influxd-meta config -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 18 | ;; 19 | run) 20 | shift 21 | set -- influxd-meta run -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 22 | ;; 23 | -*) 24 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 25 | ;; 26 | *) 27 | set -- influxd-meta "$@" 28 | ;; 29 | esac 30 | else 31 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" 32 | fi 33 | fi 34 | 35 | exec "$@" 36 | -------------------------------------------------------------------------------- /influxdb/1.7/meta/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | export INFLUXDB_META_CONFIG_PATH=${INFLUXDB_META_CONFIG_PATH:-/etc/influxdb/influxdb-meta.conf} 6 | 7 | if [ "${1:0:1}" = '-' ]; then 8 | set -- influxd-meta "$@" 9 | fi 10 | 11 | if [ "$1" = 'influxd-meta' ]; then 12 | shift 13 | if [ $# -gt 0 ]; then 14 | case $1 in 15 | config) 16 | shift 17 | set -- influxd-meta config -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 18 | ;; 19 | run) 20 | shift 21 | set -- influxd-meta run -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 22 | ;; 23 | -*) 24 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 25 | ;; 26 | *) 27 | set -- influxd-meta "$@" 28 | ;; 29 | esac 30 | else 31 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" 32 | fi 33 | fi 34 | 35 | exec "$@" 36 | -------------------------------------------------------------------------------- /influxdb/1.8/meta/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | export INFLUXDB_META_CONFIG_PATH=${INFLUXDB_META_CONFIG_PATH:-/etc/influxdb/influxdb-meta.conf} 6 | 7 | if [ "${1:0:1}" = '-' ]; then 8 | set -- influxd-meta "$@" 9 | fi 10 | 11 | if [ "$1" = 'influxd-meta' ]; then 12 | shift 13 | if [ $# -gt 0 ]; then 14 | case $1 in 15 | config) 16 | shift 17 | set -- influxd-meta config -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 18 | ;; 19 | run) 20 | shift 21 | set -- influxd-meta run -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 22 | ;; 23 | -*) 24 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 25 | ;; 26 | *) 27 | set -- influxd-meta "$@" 28 | ;; 29 | esac 30 | else 31 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" 32 | fi 33 | fi 34 | 35 | exec "$@" 36 | -------------------------------------------------------------------------------- /influxdb/1.9/meta/alpine/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export INFLUXDB_HOSTNAME=${INFLUXDB_HOSTNAME:-$HOSTNAME} 5 | export INFLUXDB_META_CONFIG_PATH=${INFLUXDB_META_CONFIG_PATH:-/etc/influxdb/influxdb-meta.conf} 6 | 7 | if [ "${1:0:1}" = '-' ]; then 8 | set -- influxd-meta "$@" 9 | fi 10 | 11 | if [ "$1" = 'influxd-meta' ]; then 12 | shift 13 | if [ $# -gt 0 ]; then 14 | case $1 in 15 | config) 16 | shift 17 | set -- influxd-meta config -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 18 | ;; 19 | run) 20 | shift 21 | set -- influxd-meta run -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 22 | ;; 23 | -*) 24 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" "$@" 25 | ;; 26 | *) 27 | set -- influxd-meta "$@" 28 | ;; 29 | esac 30 | else 31 | set -- influxd-meta -config "${INFLUXDB_META_CONFIG_PATH}" 32 | fi 33 | fi 34 | 35 | exec "$@" 36 | -------------------------------------------------------------------------------- /influxdb/1.7/meta/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.7.11-c1.7.11 13 | RUN wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta_${INFLUXDB_VERSION}_amd64.deb.asc && \ 14 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 15 | gpg --batch --verify influxdb-meta_${INFLUXDB_VERSION}_amd64.deb.asc influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 16 | dpkg -i influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 17 | rm -f influxdb-meta_${INFLUXDB_VERSION}_amd64.deb* 18 | COPY influxdb-meta.conf /etc/influxdb/influxdb-meta.conf 19 | 20 | EXPOSE 8091 21 | 22 | VOLUME /var/lib/influxdb 23 | 24 | COPY entrypoint.sh /entrypoint.sh 25 | ENTRYPOINT ["/entrypoint.sh"] 26 | CMD ["influxd-meta"] 27 | -------------------------------------------------------------------------------- /influxdb/1.8/meta/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.8.10-c1.8.10 13 | RUN wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta_${INFLUXDB_VERSION}_amd64.deb.asc && \ 14 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 15 | gpg --batch --verify influxdb-meta_${INFLUXDB_VERSION}_amd64.deb.asc influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 16 | dpkg -i influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 17 | rm -f influxdb-meta_${INFLUXDB_VERSION}_amd64.deb* 18 | COPY influxdb-meta.conf /etc/influxdb/influxdb-meta.conf 19 | 20 | EXPOSE 8091 21 | 22 | VOLUME /var/lib/influxdb 23 | 24 | COPY entrypoint.sh /entrypoint.sh 25 | ENTRYPOINT ["/entrypoint.sh"] 26 | CMD ["influxd-meta"] 27 | -------------------------------------------------------------------------------- /influxdb/1.9/meta/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.9.5-c1.9.5 13 | RUN wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta_${INFLUXDB_VERSION}_amd64.deb.asc && \ 14 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 15 | gpg --batch --verify influxdb-meta_${INFLUXDB_VERSION}_amd64.deb.asc influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 16 | dpkg -i influxdb-meta_${INFLUXDB_VERSION}_amd64.deb && \ 17 | rm -f influxdb-meta_${INFLUXDB_VERSION}_amd64.deb* 18 | COPY influxdb-meta.conf /etc/influxdb/influxdb-meta.conf 19 | 20 | EXPOSE 8091 21 | 22 | VOLUME /var/lib/influxdb 23 | 24 | COPY entrypoint.sh /entrypoint.sh 25 | ENTRYPOINT ["/entrypoint.sh"] 26 | CMD ["influxd-meta"] 27 | -------------------------------------------------------------------------------- /influxdb/1.7/data/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.7.11-c1.7.11 13 | RUN wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data_${INFLUXDB_VERSION}_amd64.deb.asc && \ 14 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 15 | gpg --batch --verify influxdb-data_${INFLUXDB_VERSION}_amd64.deb.asc influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 16 | dpkg -i influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 17 | rm -f influxdb-data_${INFLUXDB_VERSION}_amd64.deb* 18 | COPY influxdb.conf /etc/influxdb/influxdb.conf 19 | 20 | EXPOSE 8086 21 | 22 | VOLUME /var/lib/influxdb 23 | 24 | COPY entrypoint.sh /entrypoint.sh 25 | COPY init-influxdb.sh /init-influxdb.sh 26 | ENTRYPOINT ["/entrypoint.sh"] 27 | CMD ["influxd"] 28 | -------------------------------------------------------------------------------- /influxdb/1.8/data/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.8.10-c1.8.10 13 | RUN wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data_${INFLUXDB_VERSION}_amd64.deb.asc && \ 14 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 15 | gpg --batch --verify influxdb-data_${INFLUXDB_VERSION}_amd64.deb.asc influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 16 | dpkg -i influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 17 | rm -f influxdb-data_${INFLUXDB_VERSION}_amd64.deb* 18 | COPY influxdb.conf /etc/influxdb/influxdb.conf 19 | 20 | EXPOSE 8086 21 | 22 | VOLUME /var/lib/influxdb 23 | 24 | COPY entrypoint.sh /entrypoint.sh 25 | COPY init-influxdb.sh /init-influxdb.sh 26 | ENTRYPOINT ["/entrypoint.sh"] 27 | CMD ["influxd"] 28 | -------------------------------------------------------------------------------- /influxdb/1.9/data/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.9.5-c1.9.5 13 | RUN wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data_${INFLUXDB_VERSION}_amd64.deb.asc && \ 14 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 15 | gpg --batch --verify influxdb-data_${INFLUXDB_VERSION}_amd64.deb.asc influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 16 | dpkg -i influxdb-data_${INFLUXDB_VERSION}_amd64.deb && \ 17 | rm -f influxdb-data_${INFLUXDB_VERSION}_amd64.deb* 18 | COPY influxdb.conf /etc/influxdb/influxdb.conf 19 | 20 | EXPOSE 8086 21 | 22 | VOLUME /var/lib/influxdb 23 | 24 | COPY entrypoint.sh /entrypoint.sh 25 | COPY init-influxdb.sh /init-influxdb.sh 26 | ENTRYPOINT ["/entrypoint.sh"] 27 | CMD ["influxd"] 28 | -------------------------------------------------------------------------------- /dockerlib/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "fmt" 6 | "os" 7 | "os/exec" 8 | "strings" 9 | ) 10 | 11 | const remoteRepo = "https://github.com/influxdata/influxdata-docker.git" 12 | 13 | func latestRev(path string) (string, error) { 14 | var buf bytes.Buffer 15 | cmd := exec.Command("git", "rev-list", "-1", "--first-parent", "HEAD", "--", path) 16 | cmd.Stdout = &buf 17 | cmd.Stderr = os.Stderr 18 | 19 | if err := cmd.Run(); err != nil { 20 | return "", err 21 | } 22 | return strings.TrimSpace(buf.String()), nil 23 | } 24 | 25 | func fetchUpstream() error { 26 | cmd := exec.Command("/bin/sh", "-c", "git fetch upstream; git merge --ff-only upstream/master") 27 | cmd.Dir = "../official-images" 28 | cmd.Stdout = os.Stdout 29 | cmd.Stderr = os.Stderr 30 | 31 | if err := cmd.Run(); err != nil { 32 | return err 33 | } 34 | return nil 35 | } 36 | 37 | func getDefaultMaintainers() []string { 38 | return []string{"Jonathan A. Sternberg (@jsternberg)"} 39 | } 40 | 41 | func main() { 42 | if err := RootCmd.Execute(); err != nil { 43 | fmt.Fprintf(os.Stderr, "Error: %s\n", err) 44 | os.Exit(1) 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /kapacitor/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2015 Influxdata.inc 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /telegraf/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Influxdata.inc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /influxdb/README.md: -------------------------------------------------------------------------------- 1 | # About this Repo 2 | 3 | This is the Git repo of the Docker [official image](https://docs.docker.com/docker-hub/official_repos/) for [influxdb](https://registry.hub.docker.com/_/influxdb/). See [the Docker Hub page](https://registry.hub.docker.com/_/influxdb/) for the full readme on how to use this Docker image and for information regarding contributing and issues. 4 | 5 | The full readme is generated over in [docker-library/docs](https://github.com/docker-library/docs), specifically in [docker-library/docs/influxdb](https://github.com/docker-library/docs/tree/master/influxdb). 6 | 7 | See a change merged here that doesn't show up on the Docker Hub yet? Check [the "library/influxdb" manifest file in the docker-library/official-images repo](https://github.com/docker-library/official-images/blob/master/library/influxdb), especially [PRs with the "library/influxdb" label on that repo](https://github.com/docker-library/official-images/labels/library%2Finfluxdb). For more information about the official images process, see the [docker-library/official-images readme](https://github.com/docker-library/official-images/blob/master/README.md). 8 | 9 | [![CircleCI](https://circleci.com/gh/influxdata/influxdata-docker.svg?style=svg)](https://circleci.com/gh/influxdata/influxdata-docker) 10 | 11 | 12 | -------------------------------------------------------------------------------- /telegraf/README.md: -------------------------------------------------------------------------------- 1 | # About this Repo 2 | 3 | This is the Git repo of the Docker [official image](https://docs.docker.com/docker-hub/official_repos/) for [telegraf](https://registry.hub.docker.com/_/telegraf/). See [the Docker Hub page](https://registry.hub.docker.com/_/telegraf/) for the full readme on how to use this Docker image and for information regarding contributing and issues. 4 | 5 | The full readme is generated over in [docker-library/docs](https://github.com/docker-library/docs), specifically in [docker-library/docs/telegraf](https://github.com/docker-library/docs/tree/master/telegraf). 6 | 7 | See a change merged here that doesn't show up on the Docker Hub yet? Check [the "library/telegraf" manifest file in the docker-library/official-images repo](https://github.com/docker-library/official-images/blob/master/library/telegraf), especially [PRs with the "library/telegraf" label on that repo](https://github.com/docker-library/official-images/labels/library%2Ftelegraf). For more information about the official images process, see the [docker-library/official-images readme](https://github.com/docker-library/official-images/blob/master/README.md). 8 | 9 | [![CircleCI](https://circleci.com/gh/influxdata/influxdata-docker.svg?style=svg)](https://circleci.com/gh/influxdata/influxdata-docker) 10 | 11 | 12 | -------------------------------------------------------------------------------- /kapacitor/README.md: -------------------------------------------------------------------------------- 1 | # About this Repo 2 | 3 | This is the Git repo of the Docker [official image](https://docs.docker.com/docker-hub/official_repos/) for [kapacitor](https://registry.hub.docker.com/_/kapacitor/). See [the Docker Hub page](https://registry.hub.docker.com/_/kapacitor/) for the full readme on how to use this Docker image and for information regarding contributing and issues. 4 | 5 | The full readme is generated over in [docker-library/docs](https://github.com/docker-library/docs), specifically in [docker-library/docs/kapacitor](https://github.com/docker-library/docs/tree/master/kapacitor). 6 | 7 | See a change merged here that doesn't show up on the Docker Hub yet? Check [the "library/kapacitor" manifest file in the docker-library/official-images repo](https://github.com/docker-library/official-images/blob/master/library/kapacitor), especially [PRs with the "library/kapacitor" label on that repo](https://github.com/docker-library/official-images/labels/library%2Fkapacitor). For more information about the official images process, see the [docker-library/official-images readme](https://github.com/docker-library/official-images/blob/master/README.md). 8 | 9 | [![CircleCI](https://circleci.com/gh/influxdata/influxdata-docker.svg?style=svg)](https://circleci.com/gh/influxdata/influxdata-docker) 10 | 11 | 12 | -------------------------------------------------------------------------------- /influxdb/1.7/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.7.11 13 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 14 | case "${dpkgArch##*-}" in \ 15 | amd64) ARCH='amd64';; \ 16 | arm64) ARCH='arm64';; \ 17 | armhf) ARCH='armhf';; \ 18 | armel) ARCH='armel';; \ 19 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 20 | esac && \ 21 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc && \ 22 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \ 23 | gpg --batch --verify influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \ 24 | dpkg -i influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \ 25 | rm -f influxdb_${INFLUXDB_VERSION}_${ARCH}.deb* 26 | COPY influxdb.conf /etc/influxdb/influxdb.conf 27 | 28 | EXPOSE 8086 29 | 30 | VOLUME /var/lib/influxdb 31 | 32 | COPY entrypoint.sh /entrypoint.sh 33 | COPY init-influxdb.sh /init-influxdb.sh 34 | ENTRYPOINT ["/entrypoint.sh"] 35 | CMD ["influxd"] 36 | -------------------------------------------------------------------------------- /influxdb/1.8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | for key in \ 7 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 8 | do \ 9 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 10 | done 11 | 12 | ENV INFLUXDB_VERSION 1.8.10 13 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 14 | case "${dpkgArch##*-}" in \ 15 | amd64) ARCH='amd64';; \ 16 | arm64) ARCH='arm64';; \ 17 | armhf) ARCH='armhf';; \ 18 | armel) ARCH='armel';; \ 19 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 20 | esac && \ 21 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc && \ 22 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \ 23 | gpg --batch --verify influxdb_${INFLUXDB_VERSION}_${ARCH}.deb.asc influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \ 24 | dpkg -i influxdb_${INFLUXDB_VERSION}_${ARCH}.deb && \ 25 | rm -f influxdb_${INFLUXDB_VERSION}_${ARCH}.deb* 26 | COPY influxdb.conf /etc/influxdb/influxdb.conf 27 | 28 | EXPOSE 8086 29 | 30 | VOLUME /var/lib/influxdb 31 | 32 | COPY entrypoint.sh /entrypoint.sh 33 | COPY init-influxdb.sh /init-influxdb.sh 34 | ENTRYPOINT ["/entrypoint.sh"] 35 | CMD ["influxd"] 36 | -------------------------------------------------------------------------------- /chronograf/README.md: -------------------------------------------------------------------------------- 1 | # About this Repo 2 | 3 | This is the Git repo of the Docker [official image](https://docs.docker.com/docker-hub/official_repos/) for [chronograf](https://registry.hub.docker.com/_/chronograf/). See [the Docker Hub page](https://registry.hub.docker.com/_/chronograf/) for the full readme on how to use this Docker image and for information regarding contributing and issues. 4 | 5 | The full readme is generated over in [docker-library/docs](https://github.com/docker-library/docs), specifically in [docker-library/docs/chronograf](https://github.com/docker-library/docs/tree/master/chronograf). 6 | 7 | See a change merged here that doesn't show up on the Docker Hub yet? Check [the "library/chronograf" manifest file in the docker-library/official-images repo](https://github.com/docker-library/official-images/blob/master/library/chronograf), especially [PRs with the "library/chronograf" label on that repo](https://github.com/docker-library/official-images/labels/library%2Fchronograf). For more information about the official images process, see the [docker-library/official-images readme](https://github.com/docker-library/official-images/blob/master/README.md). 8 | 9 | [![CircleCI](https://circleci.com/gh/influxdata/influxdata-docker.svg?style=svg)](https://circleci.com/gh/influxdata/influxdata-docker) 10 | 11 | 12 | -------------------------------------------------------------------------------- /kapacitor/1.6/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV KAPACITOR_VERSION 1.6.2 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor-${KAPACITOR_VERSION}_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor-${KAPACITOR_VERSION}_linux_amd64.tar.gz && \ 20 | gpg --batch --verify kapacitor-${KAPACITOR_VERSION}_linux_amd64.tar.gz.asc kapacitor-${KAPACITOR_VERSION}_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src && \ 22 | tar -C /usr/src -xzf kapacitor-${KAPACITOR_VERSION}_linux_amd64.tar.gz && \ 23 | cp -ar /usr/src/kapacitor-*/* / && \ 24 | gpgconf --kill all && \ 25 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 26 | apk del .build-deps 27 | COPY kapacitor.conf /etc/kapacitor/kapacitor.conf 28 | EXPOSE 9092 29 | 30 | VOLUME /var/lib/kapacitor 31 | 32 | COPY entrypoint.sh /entrypoint.sh 33 | ENTRYPOINT ["/entrypoint.sh"] 34 | CMD ["kapacitord"] 35 | -------------------------------------------------------------------------------- /influxdb/1.9/data/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.9.5-c1.9.5 8 | RUN set -ex && \ 9 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 10 | for key in \ 11 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 12 | do \ 13 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 14 | done && \ 15 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data-${INFLUXDB_VERSION}_linux_amd64.tar.gz.asc && \ 16 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data-${INFLUXDB_VERSION}_linux_amd64.tar.gz && \ 17 | gpg --batch --verify influxdb-data-${INFLUXDB_VERSION}_linux_amd64.tar.gz.asc influxdb-data-${INFLUXDB_VERSION}_linux_amd64.tar.gz && \ 18 | mkdir -p /usr/src && \ 19 | tar -C /usr/src -xzf influxdb-data-${INFLUXDB_VERSION}_linux_amd64.tar.gz && \ 20 | rm -f /usr/src/influxdb-*/influxdb.conf && \ 21 | chmod +x /usr/src/influxdb-*/* && \ 22 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 23 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 24 | apk del .build-deps 25 | COPY influxdb.conf /etc/influxdb/influxdb.conf 26 | 27 | EXPOSE 8086 28 | 29 | VOLUME /var/lib/influxdb 30 | 31 | COPY entrypoint.sh /entrypoint.sh 32 | COPY init-influxdb.sh /init-influxdb.sh 33 | ENTRYPOINT ["/entrypoint.sh"] 34 | CMD ["influxd"] 35 | -------------------------------------------------------------------------------- /influxdb/1.9/meta/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.9.5-c1.9.5 8 | RUN set -ex && \ 9 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 10 | for key in \ 11 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 12 | do \ 13 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 14 | done && \ 15 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta-${INFLUXDB_VERSION}_linux_amd64.tar.gz.asc && \ 16 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta-${INFLUXDB_VERSION}_linux_amd64.tar.gz && \ 17 | gpg --batch --verify influxdb-meta-${INFLUXDB_VERSION}_linux_amd64.tar.gz.asc influxdb-meta-${INFLUXDB_VERSION}_linux_amd64.tar.gz && \ 18 | mkdir -p /usr/src && \ 19 | tar -C /usr/src -xzf influxdb-meta-${INFLUXDB_VERSION}_linux_amd64.tar.gz && \ 20 | rm -f /usr/src/influxdb-*/influxdb-meta.conf && \ 21 | chmod +x /usr/src/influxdb-*/* && \ 22 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 23 | (rm -rf /root/.gnupg || true) && \ 24 | rm -rf *.tar.gz* /usr/src && \ 25 | apk del .build-deps 26 | COPY influxdb-meta.conf /etc/influxdb/influxdb-meta.conf 27 | 28 | EXPOSE 8091 29 | 30 | VOLUME /var/lib/influxdb 31 | 32 | COPY entrypoint.sh /entrypoint.sh 33 | ENTRYPOINT ["/entrypoint.sh"] 34 | CMD ["influxd-meta"] 35 | -------------------------------------------------------------------------------- /influxdb/1.8/meta/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.8.10-c1.8.10 8 | RUN set -ex && \ 9 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 10 | for key in \ 11 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 12 | do \ 13 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 14 | done && \ 15 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc && \ 16 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 17 | gpg --batch --verify influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 18 | mkdir -p /usr/src && \ 19 | tar -C /usr/src -xzf influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 20 | rm -f /usr/src/influxdb-*/influxdb-meta.conf && \ 21 | chmod +x /usr/src/influxdb-*/* && \ 22 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 23 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 24 | apk del .build-deps 25 | COPY influxdb-meta.conf /etc/influxdb/influxdb-meta.conf 26 | 27 | EXPOSE 8091 28 | 29 | VOLUME /var/lib/influxdb 30 | 31 | COPY entrypoint.sh /entrypoint.sh 32 | ENTRYPOINT ["/entrypoint.sh"] 33 | CMD ["influxd-meta"] 34 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-setup-with-rp: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | declare -ra docker_run_influxd=( 10 | docker run -i -d 11 | --name=${container_name} 12 | -u $(id -u):influxdb 13 | -p 8086:8086 14 | -v ${data}:/var/lib/influxdb2 15 | -v ${config}:/etc/influxdb2 16 | -e DOCKER_INFLUXDB_INIT_MODE=setup 17 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 18 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 19 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 20 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 21 | -e DOCKER_INFLUXDB_INIT_RETENTION=${TEST_RETENTION_SECONDS}s 22 | influxdb:${tag} influxd run 23 | ) 24 | 25 | # Boot the container 26 | log_msg Booting 2.x container in setup mode 27 | if ! ${docker_run_influxd[@]} > /dev/null; then 28 | log_msg Error: Failed to launch container 29 | exit 1 30 | fi 31 | wait_container_ready 32 | 33 | # Get the auth token generated by setup. 34 | declare -r auth_token=$(extract_token ${container_name}) 35 | 36 | log_msg Checking bucket RP 37 | declare rp=$(curl -s -H "Authorization: Token ${auth_token}" "localhost:8086/api/v2/buckets?name=${TEST_BUCKET}" | jq -r .buckets[].retentionRules[].everySeconds) 38 | 39 | if [[ ${rp} != ${TEST_RETENTION_SECONDS} ]]; then 40 | log_msg Error: Bad bucket RP post-setup 41 | echo ${rp} 42 | exit 1 43 | fi 44 | -------------------------------------------------------------------------------- /telegraf/1.18/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:buster-curl 2 | 3 | RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ 4 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends iputils-ping snmp procps lm-sensors && \ 5 | rm -rf /var/lib/apt/lists/* 6 | 7 | RUN set -ex && \ 8 | mkdir ~/.gnupg; \ 9 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 10 | for key in \ 11 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 12 | do \ 13 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 14 | done 15 | 16 | ENV TELEGRAF_VERSION 1.18.3 17 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 18 | case "${dpkgArch##*-}" in \ 19 | amd64) ARCH='amd64';; \ 20 | arm64) ARCH='arm64';; \ 21 | armhf) ARCH='armhf';; \ 22 | armel) ARCH='armel';; \ 23 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 24 | esac && \ 25 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb.asc && \ 26 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 27 | gpg --batch --verify telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb.asc telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 28 | dpkg -i telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 29 | rm -f telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb* 30 | 31 | EXPOSE 8125/udp 8092/udp 8094 32 | 33 | COPY entrypoint.sh /entrypoint.sh 34 | ENTRYPOINT ["/entrypoint.sh"] 35 | CMD ["telegraf"] 36 | -------------------------------------------------------------------------------- /telegraf/1.19/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:buster-curl 2 | 3 | RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ 4 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends iputils-ping snmp procps lm-sensors && \ 5 | rm -rf /var/lib/apt/lists/* 6 | 7 | RUN set -ex && \ 8 | mkdir ~/.gnupg; \ 9 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 10 | for key in \ 11 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 12 | do \ 13 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 14 | done 15 | 16 | ENV TELEGRAF_VERSION 1.19.3 17 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 18 | case "${dpkgArch##*-}" in \ 19 | amd64) ARCH='amd64';; \ 20 | arm64) ARCH='arm64';; \ 21 | armhf) ARCH='armhf';; \ 22 | armel) ARCH='armel';; \ 23 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 24 | esac && \ 25 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb.asc && \ 26 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 27 | gpg --batch --verify telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb.asc telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 28 | dpkg -i telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 29 | rm -f telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb* 30 | 31 | EXPOSE 8125/udp 8092/udp 8094 32 | 33 | COPY entrypoint.sh /entrypoint.sh 34 | ENTRYPOINT ["/entrypoint.sh"] 35 | CMD ["telegraf"] 36 | -------------------------------------------------------------------------------- /telegraf/1.20/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:buster-curl 2 | 3 | RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ 4 | DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends iputils-ping snmp procps lm-sensors && \ 5 | rm -rf /var/lib/apt/lists/* 6 | 7 | RUN set -ex && \ 8 | mkdir ~/.gnupg; \ 9 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 10 | for key in \ 11 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 12 | do \ 13 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 14 | done 15 | 16 | ENV TELEGRAF_VERSION 1.20.3 17 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 18 | case "${dpkgArch##*-}" in \ 19 | amd64) ARCH='amd64';; \ 20 | arm64) ARCH='arm64';; \ 21 | armhf) ARCH='armhf';; \ 22 | armel) ARCH='armel';; \ 23 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 24 | esac && \ 25 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb.asc && \ 26 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 27 | gpg --batch --verify telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb.asc telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 28 | dpkg -i telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb && \ 29 | rm -f telegraf_${TELEGRAF_VERSION}-1_${ARCH}.deb* 30 | 31 | EXPOSE 8125/udp 8092/udp 8094 32 | 33 | COPY entrypoint.sh /entrypoint.sh 34 | ENTRYPOINT ["/entrypoint.sh"] 35 | CMD ["telegraf"] 36 | -------------------------------------------------------------------------------- /influxdb/1.8/data/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.8.10-c1.8.10 8 | RUN set -ex && \ 9 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 10 | for key in \ 11 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 12 | do \ 13 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 14 | done && \ 15 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc && \ 16 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 17 | gpg --batch --verify influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 18 | mkdir -p /usr/src && \ 19 | tar -C /usr/src -xzf influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 20 | rm -f /usr/src/influxdb-*/influxdb.conf && \ 21 | chmod +x /usr/src/influxdb-*/* && \ 22 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 23 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 24 | apk del .build-deps 25 | COPY influxdb.conf /etc/influxdb/influxdb.conf 26 | 27 | EXPOSE 8086 28 | 29 | VOLUME /var/lib/influxdb 30 | 31 | COPY entrypoint.sh /entrypoint.sh 32 | COPY init-influxdb.sh /init-influxdb.sh 33 | ENTRYPOINT ["/entrypoint.sh"] 34 | CMD ["influxd"] 35 | -------------------------------------------------------------------------------- /kapacitor/1.4/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV KAPACITOR_VERSION 1.4.1 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz.asc kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src && \ 22 | tar -C /usr/src -xzf kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz && \ 23 | rm -f /usr/src/kapacitor-*/kapacitor.conf && \ 24 | chmod +x /usr/src/kapacitor-*/* && \ 25 | cp -a /usr/src/kapacitor-*/* /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps 29 | COPY kapacitor.conf /etc/kapacitor/kapacitor.conf 30 | 31 | EXPOSE 9092 32 | 33 | VOLUME /var/lib/kapacitor 34 | 35 | COPY entrypoint.sh /entrypoint.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["kapacitord"] 38 | -------------------------------------------------------------------------------- /kapacitor/1.5/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV KAPACITOR_VERSION 1.5.9 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz.asc kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src && \ 22 | tar -C /usr/src -xzf kapacitor-${KAPACITOR_VERSION}-static_linux_amd64.tar.gz && \ 23 | rm -f /usr/src/kapacitor-*/kapacitor.conf && \ 24 | chmod +x /usr/src/kapacitor-*/* && \ 25 | cp -a /usr/src/kapacitor-*/* /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps 29 | COPY kapacitor.conf /etc/kapacitor/kapacitor.conf 30 | 31 | EXPOSE 9092 32 | 33 | VOLUME /var/lib/kapacitor 34 | 35 | COPY entrypoint.sh /entrypoint.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["kapacitord"] 38 | -------------------------------------------------------------------------------- /influxdb/1.7/meta/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.7.11-c1.7.11 8 | RUN set -ex && \ 9 | mkdir ~/.gnupg; \ 10 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 11 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 12 | for key in \ 13 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 14 | do \ 15 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 16 | done && \ 17 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc && \ 18 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 19 | gpg --batch --verify influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 20 | mkdir -p /usr/src && \ 21 | tar -C /usr/src -xzf influxdb-meta-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 22 | rm -f /usr/src/influxdb-*/influxdb-meta.conf && \ 23 | chmod +x /usr/src/influxdb-*/* && \ 24 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 25 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 26 | apk del .build-deps 27 | COPY influxdb-meta.conf /etc/influxdb/influxdb-meta.conf 28 | 29 | EXPOSE 8091 30 | 31 | VOLUME /var/lib/influxdb 32 | 33 | COPY entrypoint.sh /entrypoint.sh 34 | ENTRYPOINT ["/entrypoint.sh"] 35 | CMD ["influxd-meta"] 36 | -------------------------------------------------------------------------------- /influxdb/1.7/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.7.11 8 | RUN set -ex && \ 9 | mkdir ~/.gnupg; \ 10 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 11 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 12 | for key in \ 13 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 14 | do \ 15 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 16 | done && \ 17 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc && \ 18 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 19 | gpg --batch --verify influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 20 | mkdir -p /usr/src && \ 21 | tar -C /usr/src -xzf influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 22 | rm -f /usr/src/influxdb-*/influxdb.conf && \ 23 | chmod +x /usr/src/influxdb-*/* && \ 24 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 25 | gpgconf --kill all && \ 26 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 27 | apk del .build-deps 28 | COPY influxdb.conf /etc/influxdb/influxdb.conf 29 | 30 | EXPOSE 8086 31 | 32 | VOLUME /var/lib/influxdb 33 | 34 | COPY entrypoint.sh /entrypoint.sh 35 | COPY init-influxdb.sh /init-influxdb.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["influxd"] 38 | -------------------------------------------------------------------------------- /influxdb/1.8/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.8.10 8 | RUN set -ex && \ 9 | mkdir ~/.gnupg; \ 10 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 11 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 12 | for key in \ 13 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 14 | do \ 15 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 16 | done && \ 17 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc && \ 18 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 19 | gpg --batch --verify influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 20 | mkdir -p /usr/src && \ 21 | tar -C /usr/src -xzf influxdb-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 22 | rm -f /usr/src/influxdb-*/influxdb.conf && \ 23 | chmod +x /usr/src/influxdb-*/* && \ 24 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 25 | gpgconf --kill all && \ 26 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 27 | apk del .build-deps 28 | COPY influxdb.conf /etc/influxdb/influxdb.conf 29 | 30 | EXPOSE 8086 31 | 32 | VOLUME /var/lib/influxdb 33 | 34 | COPY entrypoint.sh /entrypoint.sh 35 | COPY init-influxdb.sh /init-influxdb.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["influxd"] 38 | -------------------------------------------------------------------------------- /influxdb/1.7/data/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV INFLUXDB_VERSION 1.7.11-c1.7.11 8 | RUN set -ex && \ 9 | mkdir ~/.gnupg; \ 10 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 11 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 12 | for key in \ 13 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 14 | do \ 15 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 16 | done && \ 17 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc && \ 18 | wget --no-verbose https://dl.influxdata.com/enterprise/releases/influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 19 | gpg --batch --verify influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz.asc influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 20 | mkdir -p /usr/src && \ 21 | tar -C /usr/src -xzf influxdb-data-${INFLUXDB_VERSION}-static_linux_amd64.tar.gz && \ 22 | rm -f /usr/src/influxdb-*/influxdb.conf && \ 23 | chmod +x /usr/src/influxdb-*/* && \ 24 | cp -a /usr/src/influxdb-*/* /usr/bin/ && \ 25 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 26 | apk del .build-deps 27 | COPY influxdb.conf /etc/influxdb/influxdb.conf 28 | 29 | EXPOSE 8086 30 | 31 | VOLUME /var/lib/influxdb 32 | 33 | COPY entrypoint.sh /entrypoint.sh 34 | COPY init-influxdb.sh /init-influxdb.sh 35 | ENTRYPOINT ["/entrypoint.sh"] 36 | CMD ["influxd"] 37 | -------------------------------------------------------------------------------- /kapacitor/1.6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ 4 | DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion && \ 5 | awk 'f{if(sub(/^#/,"",$0)==0){f=0}};/^# enable bash completion/{f=1};{print;}' /etc/bash.bashrc > /etc/bash.bashrc.new && \ 6 | mv /etc/bash.bashrc.new /etc/bash.bashrc 7 | 8 | RUN set -ex && \ 9 | mkdir ~/.gnupg; \ 10 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 11 | for key in \ 12 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 13 | do \ 14 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 15 | done 16 | 17 | ENV KAPACITOR_VERSION 1.6.2 18 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 19 | case "${dpkgArch##*-}" in \ 20 | amd64) ARCH='amd64';; \ 21 | arm64) ARCH='arm64';; \ 22 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 23 | esac && \ 24 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb.asc && \ 25 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb && \ 26 | gpg --batch --verify kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb.asc kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb && \ 27 | dpkg -i kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb && \ 28 | rm -f kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb* 29 | COPY kapacitor.conf /etc/kapacitor/kapacitor.conf 30 | 31 | EXPOSE 9092 32 | 33 | VOLUME /var/lib/kapacitor 34 | 35 | COPY entrypoint.sh /entrypoint.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["kapacitord"] 38 | -------------------------------------------------------------------------------- /chronograf/1.6/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV CHRONOGRAF_VERSION 1.6.2 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src && \ 22 | tar -C /usr/src -xzf chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 23 | rm -f /usr/src/chronograf-*/chronograf.conf && \ 24 | chmod +x /usr/src/chronograf-*/* && \ 25 | cp -a /usr/src/chronograf-*/* /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps 29 | 30 | COPY LICENSE /usr/share/chronograf/LICENSE 31 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 32 | 33 | EXPOSE 8888 34 | 35 | VOLUME /var/lib/chronograf 36 | 37 | COPY entrypoint.sh /entrypoint.sh 38 | ENTRYPOINT ["/entrypoint.sh"] 39 | CMD ["chronograf"] 40 | -------------------------------------------------------------------------------- /chronograf/1.7/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV CHRONOGRAF_VERSION 1.7.17 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src && \ 22 | tar -C /usr/src -xzf chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 23 | rm -f /usr/src/chronograf-*/chronograf.conf && \ 24 | chmod +x /usr/src/chronograf-*/* && \ 25 | cp -a /usr/src/chronograf-*/* /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps 29 | 30 | COPY LICENSE /usr/share/chronograf/LICENSE 31 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 32 | 33 | EXPOSE 8888 34 | 35 | VOLUME /var/lib/chronograf 36 | 37 | COPY entrypoint.sh /entrypoint.sh 38 | ENTRYPOINT ["/entrypoint.sh"] 39 | CMD ["chronograf"] 40 | -------------------------------------------------------------------------------- /chronograf/1.8/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV CHRONOGRAF_VERSION 1.8.10 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src && \ 22 | tar -C /usr/src -xzf chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 23 | rm -f /usr/src/chronograf-*/chronograf.conf && \ 24 | chmod +x /usr/src/chronograf-*/* && \ 25 | cp -a /usr/src/chronograf-*/* /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps 29 | 30 | COPY LICENSE /usr/share/chronograf/LICENSE 31 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 32 | 33 | EXPOSE 8888 34 | 35 | VOLUME /var/lib/chronograf 36 | 37 | COPY entrypoint.sh /entrypoint.sh 38 | ENTRYPOINT ["/entrypoint.sh"] 39 | CMD ["chronograf"] 40 | -------------------------------------------------------------------------------- /chronograf/1.9/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache ca-certificates && \ 5 | update-ca-certificates 6 | 7 | ENV CHRONOGRAF_VERSION 1.9.1 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/chronograf/releases/chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz.asc chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src && \ 22 | tar -C /usr/src -xzf chronograf-${CHRONOGRAF_VERSION}-static_linux_amd64.tar.gz && \ 23 | rm -f /usr/src/chronograf-*/chronograf.conf && \ 24 | chmod +x /usr/src/chronograf-*/* && \ 25 | cp -a /usr/src/chronograf-*/* /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps 29 | 30 | COPY LICENSE /usr/share/chronograf/LICENSE 31 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 32 | 33 | EXPOSE 8888 34 | 35 | VOLUME /var/lib/chronograf 36 | 37 | COPY entrypoint.sh /entrypoint.sh 38 | ENTRYPOINT ["/entrypoint.sh"] 39 | CMD ["chronograf"] 40 | -------------------------------------------------------------------------------- /dockerlib/commands.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "os" 5 | 6 | "path/filepath" 7 | 8 | "fmt" 9 | 10 | "github.com/influxdata/influxdata-docker/dockerlib/dockerlib" 11 | "github.com/spf13/cobra" 12 | ) 13 | 14 | var RootCmd = &cobra.Command{ 15 | Use: "dockerlib", 16 | Short: "Manage docker official images", 17 | } 18 | 19 | var UpdateCmd = &cobra.Command{ 20 | Use: "update", 21 | Short: "Update the official-images repository", 22 | Run: func(cmd *cobra.Command, args []string) { 23 | if err := Update(); err != nil { 24 | fmt.Fprintf(os.Stderr, "Error: %s\n", err) 25 | os.Exit(1) 26 | } 27 | }, 28 | } 29 | 30 | func Update() error { 31 | // Locate all of the manifests within this repository. 32 | manifests, err := dockerlib.FindImageManifests() 33 | if err != nil { 34 | return err 35 | } 36 | 37 | for _, m := range manifests { 38 | if len(m.Maintainers) == 0 { 39 | m.Maintainers = getDefaultMaintainers() 40 | } 41 | header := dockerlib.Header{} 42 | for _, maintainer := range m.Maintainers { 43 | header.Add("Maintainers", maintainer) 44 | } 45 | header.Add("GitRepo", remoteRepo) 46 | 47 | rev, err := latestRev(m.BaseDir) 48 | if err != nil { 49 | return err 50 | } 51 | header.Add("GitCommit", rev) 52 | 53 | if err := func() error { 54 | f, err := os.Create(filepath.Join("../official-images/library", m.Name)) 55 | if err != nil { 56 | return err 57 | } 58 | defer f.Close() 59 | 60 | if err := m.Write(f, &header); err != nil { 61 | return err 62 | } 63 | return f.Close() 64 | }(); err != nil { 65 | return err 66 | } 67 | } 68 | return nil 69 | } 70 | 71 | func init() { 72 | RootCmd.AddCommand(UpdateCmd) 73 | } 74 | -------------------------------------------------------------------------------- /kapacitor/1.4/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ 4 | DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion && \ 5 | awk 'f{if(sub(/^#/,"",$0)==0){f=0}};/^# enable bash completion/{f=1};{print;}' /etc/bash.bashrc > /etc/bash.bashrc.new && \ 6 | mv /etc/bash.bashrc.new /etc/bash.bashrc 7 | 8 | RUN set -ex && \ 9 | mkdir ~/.gnupg; \ 10 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 11 | for key in \ 12 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 13 | do \ 14 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 15 | done 16 | 17 | ENV KAPACITOR_VERSION 1.4.1 18 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 19 | case "${dpkgArch##*-}" in \ 20 | amd64) ARCH='amd64';; \ 21 | arm64) ARCH='arm64';; \ 22 | armhf) ARCH='armhf';; \ 23 | armel) ARCH='armel';; \ 24 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 25 | esac && \ 26 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor_${KAPACITOR_VERSION}_${ARCH}.deb.asc && \ 27 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor_${KAPACITOR_VERSION}_${ARCH}.deb && \ 28 | gpg --batch --verify kapacitor_${KAPACITOR_VERSION}_${ARCH}.deb.asc kapacitor_${KAPACITOR_VERSION}_${ARCH}.deb && \ 29 | dpkg -i kapacitor_${KAPACITOR_VERSION}_${ARCH}.deb && \ 30 | rm -f kapacitor_${KAPACITOR_VERSION}_${ARCH}.deb* 31 | COPY kapacitor.conf /etc/kapacitor/kapacitor.conf 32 | 33 | EXPOSE 9092 34 | 35 | VOLUME /var/lib/kapacitor 36 | 37 | COPY entrypoint.sh /entrypoint.sh 38 | ENTRYPOINT ["/entrypoint.sh"] 39 | CMD ["kapacitord"] 40 | -------------------------------------------------------------------------------- /kapacitor/1.5/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:stretch-curl 2 | 3 | RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ 4 | DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion && \ 5 | awk 'f{if(sub(/^#/,"",$0)==0){f=0}};/^# enable bash completion/{f=1};{print;}' /etc/bash.bashrc > /etc/bash.bashrc.new && \ 6 | mv /etc/bash.bashrc.new /etc/bash.bashrc 7 | 8 | RUN set -ex && \ 9 | mkdir ~/.gnupg; \ 10 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 11 | for key in \ 12 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 13 | do \ 14 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 15 | done 16 | 17 | ENV KAPACITOR_VERSION 1.5.9 18 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 19 | case "${dpkgArch##*-}" in \ 20 | amd64) ARCH='amd64';; \ 21 | arm64) ARCH='arm64';; \ 22 | armhf) ARCH='armhf';; \ 23 | armel) ARCH='armel';; \ 24 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 25 | esac && \ 26 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb.asc && \ 27 | wget --no-verbose https://dl.influxdata.com/kapacitor/releases/kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb && \ 28 | gpg --batch --verify kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb.asc kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb && \ 29 | dpkg -i kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb && \ 30 | rm -f kapacitor_${KAPACITOR_VERSION}-1_${ARCH}.deb* 31 | COPY kapacitor.conf /etc/kapacitor/kapacitor.conf 32 | 33 | EXPOSE 9092 34 | 35 | VOLUME /var/lib/kapacitor 36 | 37 | COPY entrypoint.sh /entrypoint.sh 38 | ENTRYPOINT ["/entrypoint.sh"] 39 | CMD ["kapacitord"] 40 | -------------------------------------------------------------------------------- /telegraf/1.18/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache iputils ca-certificates net-snmp-tools procps lm_sensors tzdata su-exec && \ 5 | update-ca-certificates 6 | 7 | ENV TELEGRAF_VERSION 1.18.3 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz.asc telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src /etc/telegraf && \ 22 | tar -C /usr/src -xzf telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 23 | mv /usr/src/telegraf*/etc/telegraf/telegraf.conf /etc/telegraf/ && \ 24 | mkdir /etc/telegraf/telegraf.d && \ 25 | cp -a /usr/src/telegraf*/usr/bin/telegraf /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps && \ 29 | addgroup -S telegraf && \ 30 | adduser -S telegraf -G telegraf && \ 31 | chown -R telegraf:telegraf /etc/telegraf 32 | 33 | EXPOSE 8125/udp 8092/udp 8094 34 | 35 | COPY entrypoint.sh /entrypoint.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["telegraf"] 38 | -------------------------------------------------------------------------------- /telegraf/1.19/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache iputils ca-certificates net-snmp-tools procps lm_sensors tzdata su-exec && \ 5 | update-ca-certificates 6 | 7 | ENV TELEGRAF_VERSION 1.19.3 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz.asc telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src /etc/telegraf && \ 22 | tar -C /usr/src -xzf telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 23 | mv /usr/src/telegraf*/etc/telegraf/telegraf.conf /etc/telegraf/ && \ 24 | mkdir /etc/telegraf/telegraf.d && \ 25 | cp -a /usr/src/telegraf*/usr/bin/telegraf /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps && \ 29 | addgroup -S telegraf && \ 30 | adduser -S telegraf -G telegraf && \ 31 | chown -R telegraf:telegraf /etc/telegraf 32 | 33 | EXPOSE 8125/udp 8092/udp 8094 34 | 35 | COPY entrypoint.sh /entrypoint.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["telegraf"] 38 | -------------------------------------------------------------------------------- /telegraf/1.20/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache iputils ca-certificates net-snmp-tools procps lm_sensors tzdata su-exec && \ 5 | update-ca-certificates 6 | 7 | ENV TELEGRAF_VERSION 1.20.3 8 | 9 | RUN set -ex && \ 10 | mkdir ~/.gnupg; \ 11 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 12 | apk add --no-cache --virtual .build-deps wget gnupg tar && \ 13 | for key in \ 14 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 15 | do \ 16 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 17 | done && \ 18 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz.asc && \ 19 | wget --no-verbose https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 20 | gpg --batch --verify telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz.asc telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 21 | mkdir -p /usr/src /etc/telegraf && \ 22 | tar -C /usr/src -xzf telegraf-${TELEGRAF_VERSION}_static_linux_amd64.tar.gz && \ 23 | mv /usr/src/telegraf*/etc/telegraf/telegraf.conf /etc/telegraf/ && \ 24 | mkdir /etc/telegraf/telegraf.d && \ 25 | cp -a /usr/src/telegraf*/usr/bin/telegraf /usr/bin/ && \ 26 | gpgconf --kill all && \ 27 | rm -rf *.tar.gz* /usr/src /root/.gnupg && \ 28 | apk del .build-deps && \ 29 | addgroup -S telegraf && \ 30 | adduser -S telegraf -G telegraf && \ 31 | chown -R telegraf:telegraf /etc/telegraf 32 | 33 | EXPOSE 8125/udp 8092/udp 8094 34 | 35 | COPY entrypoint.sh /entrypoint.sh 36 | ENTRYPOINT ["/entrypoint.sh"] 37 | CMD ["telegraf"] 38 | -------------------------------------------------------------------------------- /chronograf/1.7/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:stretch-slim 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | apt-get update && apt-get install -y gpg dirmngr --no-install-recommends && \ 7 | rm -rf /var/lib/apt/lists/* && \ 8 | for key in \ 9 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 10 | do \ 11 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 12 | done 13 | 14 | ENV CHRONOGRAF_VERSION 1.7.17 15 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 16 | case "${dpkgArch##*-}" in \ 17 | amd64) ARCH='amd64';; \ 18 | arm64) ARCH='arm64';; \ 19 | armhf) ARCH='armhf';; \ 20 | armel) ARCH='armel';; \ 21 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 22 | esac && \ 23 | set -x && \ 24 | apt-get update && apt-get install -y ca-certificates curl --no-install-recommends && \ 25 | rm -rf /var/lib/apt/lists/* && \ 26 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc" && \ 27 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb" && \ 28 | gpg --batch --verify chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 29 | dpkg -i chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 30 | rm -f chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb* && \ 31 | apt-get purge -y --auto-remove $buildDeps 32 | 33 | COPY LICENSE /usr/share/chronograf/LICENSE 34 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 35 | 36 | EXPOSE 8888 37 | 38 | VOLUME /var/lib/chronograf 39 | 40 | COPY entrypoint.sh /entrypoint.sh 41 | ENTRYPOINT ["/entrypoint.sh"] 42 | CMD ["chronograf"] 43 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-setup-user-scripts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 scripts=$6 8 | 9 | echo "$TEST_CREATE_DBRP_SCRIPT" > ${scripts}/1-create-dbrp.sh 10 | echo "$TEST_CREATE_V1_AUTH_SCRIPT" > ${scripts}/2-create-v1-auth.sh 11 | chmod +x ${scripts}/1-create-dbrp.sh 12 | chmod +x ${scripts}/2-create-v1-auth.sh 13 | 14 | declare -ra docker_run_influxd=( 15 | docker run -i -d 16 | --name=${container_name} 17 | -u $(id -u):influxdb 18 | -p 8086:8086 19 | -v ${data}:/var/lib/influxdb2 20 | -v ${config}:/etc/influxdb2 21 | -v ${scripts}:/docker-entrypoint-initdb.d 22 | -e DOCKER_INFLUXDB_INIT_MODE=setup 23 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 24 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 25 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 26 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 27 | influxdb:${tag} 28 | ) 29 | 30 | log_msg Booting 2.x container in setup mode 31 | if ! ${docker_run_influxd[@]} > /dev/null; then 32 | log_msg Error: Failed to launch container 33 | exit 1 34 | fi 35 | wait_container_ready 36 | 37 | log_msg Checking we can read from V1 API 38 | declare -ra curl_v1=( 39 | curl -s 40 | -u ${TEST_V1_USER}:${TEST_V1_PASSWORD} 41 | --data-urlencode db=${TEST_V1_DB} 42 | --data-urlencode rp=${TEST_V1_RP} 43 | --data-urlencode q='SHOW MEASUREMENTS' 44 | localhost:8086/query 45 | ) 46 | declare -r measurements=$("${curl_v1[@]}" | jq -r .results[].statement_id) 47 | if [[ "${measurements}" != 0 ]]; then 48 | log_msg Got unexpected response from V1 API 49 | echo ${measurements} 50 | exit 1 51 | fi 52 | -------------------------------------------------------------------------------- /chronograf/1.6/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:stretch-slim 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | apt-get update && apt-get install -y gnupg ca-certificates dirmngr --no-install-recommends && \ 7 | rm -rf /var/lib/apt/lists/* && \ 8 | for key in \ 9 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 10 | do \ 11 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 12 | done 13 | 14 | ENV CHRONOGRAF_VERSION 1.6.2 15 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 16 | case "${dpkgArch##*-}" in \ 17 | amd64) ARCH='amd64';; \ 18 | arm64) ARCH='arm64';; \ 19 | armhf) ARCH='armhf';; \ 20 | armel) ARCH='armel';; \ 21 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 22 | esac && \ 23 | set -x && \ 24 | apt-get update && apt-get install -y ca-certificates curl --no-install-recommends && \ 25 | rm -rf /var/lib/apt/lists/* && \ 26 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc" && \ 27 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb" && \ 28 | gpg --batch --verify chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 29 | dpkg -i chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 30 | rm -f chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb* && \ 31 | apt-get purge -y --auto-remove $buildDeps 32 | 33 | COPY LICENSE /usr/share/chronograf/LICENSE 34 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 35 | 36 | EXPOSE 8888 37 | 38 | VOLUME /var/lib/chronograf 39 | 40 | COPY entrypoint.sh /entrypoint.sh 41 | ENTRYPOINT ["/entrypoint.sh"] 42 | CMD ["chronograf"] 43 | -------------------------------------------------------------------------------- /chronograf/1.8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:stretch-slim 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | apt-get update && apt-get install -y gnupg ca-certificates dirmngr --no-install-recommends && \ 7 | rm -rf /var/lib/apt/lists/* && \ 8 | for key in \ 9 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 10 | do \ 11 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 12 | done 13 | 14 | ENV CHRONOGRAF_VERSION 1.8.10 15 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 16 | case "${dpkgArch##*-}" in \ 17 | amd64) ARCH='amd64';; \ 18 | arm64) ARCH='arm64';; \ 19 | armhf) ARCH='armhf';; \ 20 | armel) ARCH='armel';; \ 21 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 22 | esac && \ 23 | set -x && \ 24 | apt-get update && apt-get install -y ca-certificates curl --no-install-recommends && \ 25 | rm -rf /var/lib/apt/lists/* && \ 26 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc" && \ 27 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb" && \ 28 | gpg --batch --verify chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 29 | dpkg -i chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 30 | rm -f chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb* && \ 31 | apt-get purge -y --auto-remove $buildDeps 32 | 33 | COPY LICENSE /usr/share/chronograf/LICENSE 34 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 35 | 36 | EXPOSE 8888 37 | 38 | VOLUME /var/lib/chronograf 39 | 40 | COPY entrypoint.sh /entrypoint.sh 41 | ENTRYPOINT ["/entrypoint.sh"] 42 | CMD ["chronograf"] 43 | -------------------------------------------------------------------------------- /chronograf/1.9/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:stretch-slim 2 | 3 | RUN set -ex && \ 4 | mkdir ~/.gnupg; \ 5 | echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf; \ 6 | apt-get update && apt-get install -y gnupg ca-certificates dirmngr --no-install-recommends && \ 7 | rm -rf /var/lib/apt/lists/* && \ 8 | for key in \ 9 | 05CE15085FC09D18E99EFB22684A14CF2582E0C5 ; \ 10 | do \ 11 | gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$key" ; \ 12 | done 13 | 14 | ENV CHRONOGRAF_VERSION 1.9.1 15 | RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 16 | case "${dpkgArch##*-}" in \ 17 | amd64) ARCH='amd64';; \ 18 | arm64) ARCH='arm64';; \ 19 | armhf) ARCH='armhf';; \ 20 | armel) ARCH='armel';; \ 21 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 22 | esac && \ 23 | set -x && \ 24 | apt-get update && apt-get install -y ca-certificates curl --no-install-recommends && \ 25 | rm -rf /var/lib/apt/lists/* && \ 26 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc" && \ 27 | curl -SLO "https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb" && \ 28 | gpg --batch --verify chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb.asc chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 29 | dpkg -i chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb && \ 30 | rm -f chronograf_${CHRONOGRAF_VERSION}_${ARCH}.deb* && \ 31 | apt-get purge -y --auto-remove $buildDeps 32 | 33 | COPY LICENSE /usr/share/chronograf/LICENSE 34 | COPY agpl-3.0.md /usr/share/chronograf/agpl-3.0.md 35 | 36 | EXPOSE 8888 37 | 38 | VOLUME /var/lib/chronograf 39 | 40 | COPY entrypoint.sh /entrypoint.sh 41 | ENTRYPOINT ["/entrypoint.sh"] 42 | CMD ["chronograf"] 43 | -------------------------------------------------------------------------------- /dockerlib/dockerlib/header.go: -------------------------------------------------------------------------------- 1 | package dockerlib 2 | 3 | import ( 4 | "container/list" 5 | "fmt" 6 | "io" 7 | "strings" 8 | ) 9 | 10 | type keyValuePair struct { 11 | key string 12 | values []string 13 | } 14 | 15 | type Header struct { 16 | values *list.List 17 | index map[string]*list.Element 18 | } 19 | 20 | func (h *Header) Add(key, value string) { 21 | e, ok := h.index[key] 22 | if !ok { 23 | h.Set(key, value) 24 | return 25 | } 26 | 27 | kv := e.Value.(*keyValuePair) 28 | kv.values = append(kv.values, value) 29 | } 30 | 31 | func (h *Header) Set(key, value string) { 32 | if h.index == nil { 33 | h.index = make(map[string]*list.Element) 34 | } 35 | if h.values == nil { 36 | h.values = list.New() 37 | } 38 | values := make([]string, 1) 39 | values[0] = value 40 | h.index[key] = h.values.PushBack(&keyValuePair{ 41 | key: key, 42 | values: values, 43 | }) 44 | } 45 | 46 | func (h *Header) Write(w io.Writer) error { 47 | for front := h.values.Front(); front != nil; front = front.Next() { 48 | kv := front.Value.(*keyValuePair) 49 | if kv.key == "Maintainers" { 50 | if err := h.writeMaintainers(w, kv.values); err != nil { 51 | return err 52 | } 53 | } else if _, err := fmt.Fprintf(w, "%s: %s\n", kv.key, strings.Join(kv.values, ", ")); err != nil { 54 | return err 55 | } 56 | } 57 | return nil 58 | } 59 | 60 | func (h *Header) writeMaintainers(w io.Writer, values []string) error { 61 | if _, err := fmt.Fprint(w, "Maintainers: "); err != nil { 62 | return err 63 | } 64 | for i, value := range values { 65 | if _, err := fmt.Fprintf(w, "%s", value); err != nil { 66 | return err 67 | } 68 | if i < len(values)-1 { 69 | if _, err := fmt.Fprint(w, ",\n "); err != nil { 70 | return err 71 | } 72 | } 73 | } 74 | if _, err := fmt.Fprintln(w); err != nil { 75 | return err 76 | } 77 | return nil 78 | } 79 | -------------------------------------------------------------------------------- /influxdb/test/cases/common.sh: -------------------------------------------------------------------------------- 1 | declare -r ATTEMPTS=30 2 | 3 | declare -r TEST_USER=username 4 | declare -r TEST_PASSWORD=password 5 | declare -r TEST_ORG=org 6 | declare -r TEST_BUCKET=bucket 7 | declare -r TEST_RETENTION_SECONDS=604800 8 | declare -r TEST_ADMIN_TOKEN=supersecrettoken12345 9 | 10 | declare -r TEST_V1_DB=telegraf 11 | declare -r TEST_V1_RP=autogen 12 | declare -r TEST_V1_USER=v1-reader 13 | declare -r TEST_V1_PASSWORD=v1-password 14 | declare -r TEST_CREATE_DBRP_SCRIPT=$(cat </dev/null; then 52 | return 0 53 | fi 54 | sleep 2 55 | attempt_count=$((attempt_count + 1)) 56 | done 57 | log_msg Error: container did not start up in time 58 | return 1 59 | } 60 | 61 | function extract_token () { 62 | docker exec -i ${1} influx auth list --skip-verify --user ${TEST_USER} --hide-headers | cut -f 3 63 | } 64 | 65 | function join_array () { 66 | local IFS=, 67 | echo "$*" 68 | } 69 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-setup-init-bind: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | declare -ra docker_run_influxd=( 10 | docker run -i -d 11 | --name=${container_name} 12 | -u $(id -u):influxdb 13 | -p 8086:3333 14 | -v ${data}:/var/lib/influxdb2 15 | -v ${config}:/etc/influxdb2 16 | -e DOCKER_INFLUXDB_INIT_MODE=setup 17 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 18 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 19 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 20 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 21 | -e INFLUXD_HTTP_BIND_ADDRESS=:2222 22 | -e INFLUXD_INIT_PORT=9998 23 | influxdb:${tag} influxd run 24 | # NOTE: The CLI arg here is redundant with the INFLUXD_HTTP_BIND_ADDRESS env var above. 25 | # We include both because `entrypoint.sh` needs to cover both when overriding the bind- 26 | # address used by the "init" instance of the server. The initial implementation of the 27 | # script covered the CLI arg, but missed the env var. A follow-up fix covered the env 28 | # var but dropped coverage for the CLI arg. Now we test for both. 29 | # 30 | # The CLI arg is expected to "win" once the final server boots up, according to our config 31 | # precedence rules. 32 | --http-bind-address ":3333" 33 | ) 34 | 35 | # Boot the container 36 | log_msg Booting 2.x container in setup mode 37 | if ! ${docker_run_influxd[@]} > /dev/null; then 38 | log_msg Error: Failed to launch container 39 | exit 1 40 | fi 41 | wait_container_ready 42 | 43 | # Destroy the container 44 | log_msg Tearing down 2.x container 45 | docker stop ${container_name} > /dev/null 46 | docker logs ${container_name} > ${logs}/init-docker-stdout.log 2> ${logs}/init-docker-stderr.log 47 | docker rm ${container_name} > /dev/null 48 | 49 | # Check that setup actually used INFLUXD_INIT_PORT 50 | log_has () { 51 | grep "$2" ${logs}/init-docker-"$1".log > /dev/null 52 | } 53 | if ! log_has stdout 'msg=Listening.*transport=http addr=:9998 port=9998'; then 54 | log_msg Error: container did not use INFLUXD_INIT_PORT 55 | exit 1 56 | fi 57 | if ! log_has stderr 'got response from influxd, proceeding'; then 58 | log_msg Error: init ping never completed successfully 59 | exit 1 60 | fi 61 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-custom-config: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | # Extract the default config from the container. 10 | log_msg Getting default config 11 | if ! docker run --rm influxdb:${tag} influxd print-config > ${config}/default-config.yml; then 12 | log_msg Error: Failed to extract default config 13 | exit 1 14 | fi 15 | 16 | # Rewrite data paths. 17 | sed 's#/var/lib/influxdb2#/home/influxdb/influxdb2#g' ${config}/default-config.yml > ${config}/config.yml 18 | 19 | declare -ra docker_run_influxd=( 20 | docker run -i -d 21 | --name=${container_name} 22 | -u $(id -u):influxdb 23 | -p 8086:8086 24 | -v ${data}:/home/influxdb/influxdb2 25 | -v ${config}:/etc/influxdb2 26 | influxdb:${tag} run 27 | ) 28 | 29 | log_msg Booting 2.x container with custom config 30 | if ! ${docker_run_influxd[@]} > /dev/null; then 31 | log_msg Error: Failed to launch container 32 | exit 1 33 | fi 34 | wait_container_ready 35 | 36 | log_msg Setting up DB with custom config 37 | if ! docker exec -i ${container_name} influx setup -f \ 38 | --username ${TEST_USER} \ 39 | --password ${TEST_PASSWORD} \ 40 | --org ${TEST_ORG} \ 41 | --bucket ${TEST_BUCKET}; then 42 | log_msg Error: failed to run 'influx setup' command 43 | exit 1 44 | fi 45 | 46 | log_msg Tearing down 2.x container 47 | docker stop ${container_name} > /dev/null 48 | docker logs ${container_name} > ${logs}/init-docker-stdout.log 2> ${logs}/init-docker-stderr.log 49 | docker rm ${container_name} > /dev/null 50 | 51 | # Check that files were persisted to the host. 52 | if [ ! -f ${data}/influxd.bolt ]; then 53 | log_msg Error: BoltDB not persisted to host directory 54 | exit 1 55 | fi 56 | 57 | # Create a new container using the same mount-points. 58 | log_msg Booting another 2.x container 59 | if ! ${docker_run_influxd[@]} > /dev/null; then 60 | log_msg Error: failed to launch container 61 | exit 1 62 | fi 63 | wait_container_ready 64 | 65 | # Make sure the DB still reports that it's been set up. 66 | log_msg Checking onboarding API after recreating container 67 | onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 68 | 69 | if [[ ${onboarding_allowed} != 'false' ]]; then 70 | log_msg Error: Onboarding allowed after recreating container 71 | exit 1 72 | fi 73 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-help: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | declare -ra docker_run_influxd=(docker run --rm -i influxdb:${tag}) 10 | 11 | log_msg Checking various --help commands 12 | 13 | # Check that --help works. 14 | if ! ${docker_run_influxd[@]} --help > "${logs}/help.txt"; then 15 | log_msg Error: Failed to run --help 16 | exit 1 17 | fi 18 | if ! grep -q 'Start up the daemon' "${logs}/help.txt"; then 19 | log_msg Error: "${logs}/help.txt" missing expected output 20 | exit 1 21 | fi 22 | 23 | # Check that -h works. 24 | if ! ${docker_run_influxd[@]} -h > "${logs}/h.txt"; then 25 | log_msg Error: Failed to run -h 26 | exit 1 27 | fi 28 | if ! grep -q 'Start up the daemon' "${logs}/h.txt"; then 29 | log_msg Error: "${logs}/h.txt" missing expected output 30 | exit 1 31 | fi 32 | 33 | # Check that influxd --help works. 34 | if ! ${docker_run_influxd[@]} influxd --help > "${logs}/influxd-help.txt"; then 35 | log_msg Error: Failed to run influxd --help 36 | exit 1 37 | fi 38 | if ! grep -q 'Start up the daemon' "${logs}/influxd-help.txt"; then 39 | log_msg Error: "${logs}/influxd-help.txt" missing expected output 40 | exit 1 41 | fi 42 | 43 | # Check that influxd -h works. 44 | if ! ${docker_run_influxd[@]} influxd -h > "${logs}/influxd-h.txt"; then 45 | log_msg Error: Failed to run influxd -h 46 | exit 1 47 | fi 48 | if ! grep -q 'Start up the daemon' "${logs}/influxd-h.txt"; then 49 | log_msg Error: "${logs}/influxd-h.txt" missing expected output 50 | exit 1 51 | fi 52 | 53 | # Check that influxd print-config --help works. 54 | if ! ${docker_run_influxd[@]} influxd print-config --help > "${logs}/influxd-config-help.txt"; then 55 | log_msg Error: Failed to run influxd pring-config --help 56 | exit 1 57 | fi 58 | if ! grep -q 'Print config (in YAML)' "${logs}/influxd-config-help.txt"; then 59 | log_msg Error: "${logs}/influxd-config-help.txt" missing expected output 60 | exit 1 61 | fi 62 | 63 | # Check that influx --help works. 64 | if ! ${docker_run_influxd[@]} influx --help > "${logs}/influx-help.txt"; then 65 | log_msg Error: Failed to run influx --help 66 | exit 1 67 | fi 68 | if ! grep -q 'Influx Client' "${logs}/influx-help.txt"; then 69 | log_msg Error: "${logs}/influx-help.txt" missing expected output 70 | exit 1 71 | fi 72 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-setup-tls: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | # Generate a self-signed TLS cert. 10 | openssl req -batch -new \ 11 | -newkey rsa:4096 \ 12 | -x509 \ 13 | -sha256 \ 14 | -days 1 \ 15 | -nodes \ 16 | -subj "/C=US/ST=CA/L=./O=./OU=./CN=." \ 17 | -out "${config}/tls.crt" \ 18 | -keyout "${config}/tls.key" 19 | 20 | declare -ra docker_run_influxd=( 21 | docker run -i -d 22 | --name=${container_name} 23 | -u $(id -u):influxdb 24 | -p 443:8086 25 | -v ${data}:/var/lib/influxdb2 26 | -v ${config}:/etc/influxdb2 27 | -e DOCKER_INFLUXDB_INIT_MODE=setup 28 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 29 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 30 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 31 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 32 | -e INFLUXD_TLS_CERT=/etc/influxdb2/tls.crt \ 33 | -e INFLUXD_TLS_KEY=/etc/influxdb2/tls.key \ 34 | influxdb:${tag} influxd 35 | ) 36 | 37 | log_msg Booting 2.x container in setup mode 38 | if ! ${docker_run_influxd[@]} > /dev/null; then 39 | log_msg Error: Failed to launch container 40 | exit 1 41 | fi 42 | wait_container_ready_at_url "https://localhost/health" 43 | 44 | # Check that the DB reports it's been set up. 45 | log_msg Checking onboarding API post-start 46 | declare onboarding_allowed=$(curl -sk https://localhost/api/v2/setup | jq .allowed) 47 | if [[ ${onboarding_allowed} != 'false' ]]; then 48 | log_msg Error: Onboarding allowed post-start 49 | exit 1 50 | fi 51 | 52 | # Get the auth token generated by setup. 53 | declare -r auth_token=$(extract_token ${container_name}) 54 | 55 | # Make sure we can use the generated auth token to find the resources we expect. 56 | log_msg Checking org list post-setup 57 | declare orgs=$(curl -sk -H "Authorization: Token ${auth_token}" https://localhost/api/v2/orgs | jq -r .orgs[].name) 58 | if [[ ${orgs} != ${TEST_ORG} ]]; then 59 | log_msg Error: Bad org list post-setup 60 | echo ${orgs} 61 | exit 1 62 | fi 63 | 64 | log_msg Checking bucket list post-setup 65 | declare buckets=$(curl -sk -H "Authorization: Token ${auth_token}" "https://localhost/api/v2/buckets?name=${TEST_BUCKET}" | jq -r .buckets[].name) 66 | if [[ ${buckets} != ${TEST_BUCKET} ]]; then 67 | log_msg Error: Bad bucket list post-setup 68 | echo ${buckets} 69 | exit 1 70 | fi 71 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-setup-custom-config-name: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | declare -a docker_run_influxd=( 10 | docker run -i -d 11 | --name=${container_name} 12 | -u $(id -u):influxdb 13 | -p 8086:8086 14 | -v ${config}:/etc/influxdb2 15 | -v ${data}:/var/lib/influxdb2 16 | -e DOCKER_INFLUXDB_INIT_MODE=setup 17 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 18 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 19 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 20 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 21 | influxdb:${tag} influxd 22 | ) 23 | 24 | log_msg Booting 2.x container in setup mode 25 | if ! ${docker_run_influxd[@]} > /dev/null; then 26 | log_msg Error: Failed to launch container 27 | exit 1 28 | fi 29 | wait_container_ready 30 | 31 | # Destroy the container 32 | log_msg Tearing down 2.x container 33 | docker stop ${container_name} > /dev/null 34 | docker logs ${container_name} > ${logs}/init-docker-stdout.log 2> ${logs}/init-docker-stderr.log 35 | docker rm ${container_name} > /dev/null 36 | 37 | if [ ! -f ${config}/influx-configs ]; then 38 | log_msg Error: CLI configs not persisted to host directory 39 | exit 1 40 | fi 41 | rm -rf ${data}/* 42 | 43 | if ! grep -q '\[default\]' ${config}/influx-configs; then 44 | log_msg Error: CLI configs missing "'default'" entry 45 | exit 1 46 | fi 47 | 48 | # Create a new container using the same mount-points and env, with a different CLI config name. 49 | docker_run_influxd=( 50 | docker run -i -d 51 | --name=${container_name} 52 | -u $(id -u):influxdb 53 | -p 8086:8086 54 | -v ${config}:/etc/influxdb2 55 | -v ${data}:/var/lib/influxdb2 56 | -e DOCKER_INFLUXDB_INIT_MODE=setup 57 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 58 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 59 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 60 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 61 | -e DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME=test 62 | influxdb:${tag} influxd 63 | ) 64 | 65 | log_msg Booting 2.x container in setup mode 66 | if ! ${docker_run_influxd[@]} > /dev/null; then 67 | log_msg Error: Failed to launch container 68 | exit 1 69 | fi 70 | wait_container_ready 71 | 72 | if ! grep -q '\[test\]' ${config}/influx-configs; then 73 | log_msg Error: CLI configs missing "'test'" entry 74 | exit 1 75 | fi 76 | -------------------------------------------------------------------------------- /influxdb/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2016 Errplane Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | 23 | ### Licenses of Dependencies 24 | 25 | - github.com/gogo/protobuf/proto [BSD LICENSE](https://github.com/gogo/protobuf/blob/master/LICENSE) 26 | - gopkg.in/fatih/pool.v2 [MIT LICENSE](https://github.com/fatih/pool/blob/v2.0.0/LICENSE) 27 | - github.com/BurntSushi/toml [WTFPL LICENSE](https://github.com/BurntSushi/toml/blob/master/COPYING) 28 | - github.com/peterh/liner [MIT LICENSE](https://github.com/peterh/liner/blob/master/COPYING) 29 | - github.com/davecgh/go-spew/spew [ISC LICENSE](https://github.com/davecgh/go-spew/blob/master/LICENSE) 30 | - github.com/hashicorp/raft [MPL LICENSE](https://github.com/hashicorp/raft/blob/master/LICENSE) 31 | - github.com/rakyll/statik/fs [APACHE LICENSE](https://github.com/rakyll/statik/blob/master/LICENSE) 32 | - github.com/kimor79/gollectd [BSD LICENSE](https://github.com/kimor79/gollectd/blob/master/LICENSE) 33 | - github.com/bmizerany/pat [MIT LICENSE](https://github.com/bmizerany/pat#license) 34 | - react 0.13.3 [BSD LICENSE](https://github.com/facebook/react/blob/master/LICENSE) 35 | - bootstrap 3.3.5 [MIT LICENSE](https://github.com/twbs/bootstrap/blob/master/LICENSE) 36 | - jquery 2.1.4 [MIT LICENSE](https://github.com/jquery/jquery/blob/master/LICENSE.txt) 37 | - glyphicons [LICENSE](http://glyphicons.com/license/) 38 | - github.com/golang/snappy [BSD LICENSE](https://github.com/golang/snappy/blob/master/LICENSE) 39 | - github.com/boltdb/bolt [MIT LICENSE](https://github.com/boltdb/bolt/blob/master/LICENSE) 40 | - collectd.org [ISC LICENSE](https://github.com/collectd/go-collectd/blob/master/LICENSE) 41 | - golang.org/x/crypto/* [BSD LICENSE](https://github.com/golang/crypto/blob/master/LICENSE) 42 | -------------------------------------------------------------------------------- /dockerlib/dockerlib/version_test.go: -------------------------------------------------------------------------------- 1 | package dockerlib_test 2 | 3 | import ( 4 | "reflect" 5 | "testing" 6 | 7 | "encoding/json" 8 | 9 | "github.com/influxdata/influxdata-docker/dockerlib/dockerlib" 10 | ) 11 | 12 | func TestVersion_LessThan(t *testing.T) { 13 | for _, tt := range []struct { 14 | lhs, rhs string 15 | exp bool 16 | }{ 17 | { 18 | lhs: "1.4.2", 19 | rhs: "1.4", 20 | exp: false, 21 | }, 22 | { 23 | lhs: "1.3.8", 24 | rhs: "1.4.2", 25 | exp: true, 26 | }, 27 | { 28 | lhs: "1.3.8", 29 | rhs: "1.3.8", 30 | exp: false, 31 | }, 32 | { 33 | lhs: "1.4.1", 34 | rhs: "1.4.2", 35 | exp: true, 36 | }, 37 | } { 38 | t.Run(tt.lhs+" > "+tt.rhs, func(t *testing.T) { 39 | v1, err := dockerlib.NewVersion(tt.lhs) 40 | if err != nil { 41 | t.Fatalf("unexpected error: %s", err) 42 | } 43 | v2, err := dockerlib.NewVersion(tt.rhs) 44 | if err != nil { 45 | t.Fatalf("unexpected error: %s", err) 46 | } 47 | 48 | if got, exp := v1.LessThan(v2), tt.exp; got != exp { 49 | t.Fatalf("unexpected value: %v != %v", got, exp) 50 | } 51 | }) 52 | } 53 | } 54 | 55 | func TestVersion_Segments(t *testing.T) { 56 | for _, tt := range []struct { 57 | s string 58 | exp []int 59 | }{ 60 | { 61 | s: "1.4", 62 | exp: []int{1, 4}, 63 | }, 64 | { 65 | s: "1.4.7", 66 | exp: []int{1, 4, 7}, 67 | }, 68 | } { 69 | t.Run(tt.s, func(t *testing.T) { 70 | v, err := dockerlib.NewVersion(tt.s) 71 | if err != nil { 72 | t.Fatalf("unexpected error: %s", err) 73 | } 74 | 75 | if got, exp := v.Segments(), tt.exp; !reflect.DeepEqual(got, exp) { 76 | t.Errorf("unexpected segments: %v != %v", got, exp) 77 | } 78 | }) 79 | } 80 | } 81 | 82 | func TestVersion_String(t *testing.T) { 83 | for _, tt := range []struct { 84 | s string 85 | exp string 86 | }{ 87 | { 88 | s: "1.4", 89 | exp: "1.4", 90 | }, 91 | { 92 | s: "v1.4", 93 | exp: "1.4", 94 | }, 95 | } { 96 | t.Run(tt.s, func(t *testing.T) { 97 | v, err := dockerlib.NewVersion(tt.s) 98 | if err != nil { 99 | t.Fatalf("unexpected error: %s", err) 100 | } 101 | 102 | if got, exp := v.String(), tt.exp; got != exp { 103 | t.Errorf("unexpected string: %s != %s", got, exp) 104 | } 105 | }) 106 | } 107 | } 108 | 109 | func TestVersion_UnmarshalJSON(t *testing.T) { 110 | s := `{"version":"v1.4.2"}` 111 | var data struct { 112 | Version *dockerlib.Version `json:"version"` 113 | } 114 | if err := json.Unmarshal([]byte(s), &data); err != nil { 115 | t.Fatalf("unexpected error: %s", err) 116 | } 117 | 118 | if got, exp := data.Version.String(), "1.4.2"; got != exp { 119 | t.Errorf("unexpected version: %s != %s", got, exp) 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /influxdb/2.0/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:buster-curl 2 | 3 | RUN groupadd -r influxdb --gid=1000 && \ 4 | useradd -r -g influxdb --uid=1000 --home-dir=/home/influxdb --shell=/bin/bash influxdb && \ 5 | mkdir -p /home/influxdb && \ 6 | chown -R influxdb:influxdb /home/influxdb 7 | 8 | # Install gosu for easy step-down from root. 9 | # https://github.com/tianon/gosu/releases 10 | ENV GOSU_VER 1.12 11 | RUN set -eux; \ 12 | dpkgArch="$(dpkg --print-architecture)" && \ 13 | wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$dpkgArch" && \ 14 | wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$dpkgArch.asc" && \ 15 | export GNUPGHOME="$(mktemp -d)" && \ 16 | gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \ 17 | gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu && \ 18 | gpgconf --kill all && \ 19 | rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc && \ 20 | chmod +x /usr/local/bin/gosu && \ 21 | gosu --version && \ 22 | gosu nobody true 23 | 24 | ENV INFLUXDB_VERSION 2.0.9 25 | RUN set -eux && \ 26 | ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 27 | case "${dpkgArch##*-}" in \ 28 | amd64) ARCH='amd64';; \ 29 | arm64) ARCH='arm64';; \ 30 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 31 | esac && \ 32 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc && \ 33 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 34 | export GNUPGHOME="$(mktemp -d)" && \ 35 | echo "disable-ipv6" >> $GNUPGHOME/dirmngr.conf && \ 36 | gpg --batch --keyserver keys.openpgp.org --recv-keys 8C2D403D3C3BDB81A4C27C883C3E4B7317FFE40A && \ 37 | gpg --batch --verify influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 38 | tar xzf influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 39 | cp influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}/influx* /usr/local/bin/ && \ 40 | rm -rf "$GNUPGHOME" influxdb2.key influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}* && \ 41 | influxd version && \ 42 | influx version 43 | 44 | # Create standard directories expected by the entry-point. 45 | RUN mkdir /docker-entrypoint-initdb.d && \ 46 | mkdir -p /var/lib/influxdb2 && \ 47 | chown -R influxdb:influxdb /var/lib/influxdb2 && \ 48 | mkdir -p /etc/influxdb2 && \ 49 | chown -R influxdb:influxdb /etc/influxdb2 50 | VOLUME /var/lib/influxdb2 /etc/influxdb2 51 | 52 | COPY default-config.yml /etc/defaults/influxdb2/config.yml 53 | COPY entrypoint.sh /entrypoint.sh 54 | 55 | ENTRYPOINT ["/entrypoint.sh"] 56 | CMD ["influxd"] 57 | 58 | EXPOSE 8086 59 | 60 | ENV INFLUX_CONFIGS_PATH /etc/influxdb2/influx-configs 61 | ENV INFLUXD_INIT_PORT 9999 62 | ENV INFLUXD_INIT_PING_ATTEMPTS 600 63 | ENV DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME default 64 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-upgrade-custom-config: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | declare -r V1_DB_PATH=$(dirname ${SCRIPT_DIR})/tmp/v1db 6 | source ${SCRIPT_DIR}/common.sh 7 | 8 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 9 | 10 | log_msg Getting default config 11 | if ! docker run --rm influxdb:${tag} influxd print-config > ${config}/default-config.yml; then 12 | log_msg Error: Failed to extract default config 13 | exit 1 14 | fi 15 | sed -e 's#/var/lib/influxdb2#/home/influxdb/influxdb2#g' -e 's#:8086#:9000#g' ${config}/default-config.yml > ${config}/config.yml 16 | 17 | declare -r v1_config=${V1_DB_PATH}/influxdb.conf 18 | cat > ${v1_config} <<'EOF' 19 | [meta] 20 | dir = "/home/influxdb/v1/meta" 21 | 22 | [data] 23 | dir = "/home/influxdb/v1/data" 24 | engine = "tsm1" 25 | wal-dir = "/home/influxdb/v1/wal" 26 | 27 | [http] 28 | bind-address = ":9000" 29 | EOF 30 | 31 | declare -ra docker_run_influxd=( 32 | docker run -i -d 33 | --name=${container_name} 34 | -u $(id -u):influxdb 35 | -p 8086:9000 36 | -v ${data}:/home/influxdb/influxdb2 37 | -v ${config}:/etc/influxdb2 38 | -v ${V1_DB_PATH}:/home/influxdb/v1 39 | -e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/home/influxdb/v1/influxdb.conf 40 | -e DOCKER_INFLUXDB_INIT_MODE=upgrade 41 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 42 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 43 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 44 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 45 | -e DOCKER_INFLUXDB_INIT_RETENTION=${TEST_RETENTION_SECONDS}s 46 | influxdb:${tag} influxd run 47 | ) 48 | 49 | log_msg Booting 2.x container in upgrade mode with custom config 50 | if ! ${docker_run_influxd[@]} > /dev/null; then 51 | log_msg Error: Failed to launch container 52 | exit 1 53 | fi 54 | wait_container_ready 55 | 56 | log_msg Checking onboarding API post-upgrade 57 | declare onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 58 | if [[ ${onboarding_allowed} != 'false' ]]; then 59 | log_msg Error: Onboarding allowed post-upgrade 60 | exit 1 61 | fi 62 | 63 | log_msg Tearing down 2.x container 64 | docker stop ${container_name} > /dev/null 65 | docker logs ${container_name} > ${logs}/init-docker-stdout.log 2> ${logs}/init-docker-stderr.log 66 | docker rm ${container_name} > /dev/null 67 | 68 | if [ ! -f ${data}/influxd.bolt ]; then 69 | log_msg Error: BoltDB not persisted to host directory 70 | exit 1 71 | fi 72 | 73 | log_msg Booting another 2.x container 74 | if ! ${docker_run_influxd[@]} > /dev/null; then 75 | log_msg Error: failed to launch container 76 | exit 1 77 | fi 78 | wait_container_ready 79 | 80 | log_msg Checking onboarding API after recreating container 81 | onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 82 | 83 | if [[ ${onboarding_allowed} != 'false' ]]; then 84 | log_msg Error: Onboarding allowed after recreating container 85 | exit 1 86 | fi 87 | -------------------------------------------------------------------------------- /circle-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | dir=. 6 | if [ $# -gt 0 ]; then 7 | dir=("$@") 8 | fi 9 | 10 | log_msg() { 11 | echo "[$(date "+%Y/%m/%d %H:%M:%S %z")] $@" 12 | } 13 | 14 | docker_build() { 15 | if [ ! -z "$BUILD_NUMBER" ]; then 16 | # Build on Jenkins without using the cache. 17 | docker build --no-cache --force-rm "$@" 18 | elif [ ! -z "$CIRCLE_BUILD_NUM" ]; then 19 | # CircleCI cannot build docker images with --rm=true correctly. 20 | docker build --no-cache --rm=false "$@" 21 | else 22 | # Local building should use the cache for speedy development. 23 | docker build --rm=true "$@" 24 | fi 25 | } 26 | 27 | log_msg "Verifying docker daemon connectivity" 28 | docker version 29 | 30 | failed_builds=() 31 | tags=() 32 | 33 | # Gather directories with a Dockerfile and sanitize the path to remove leading 34 | # a leading ./ and multiple slashes into a single slash. 35 | dockerfiles=$(find "$dir" -name Dockerfile -print0 | xargs -0 -I{} dirname {} | grep -v dockerlib | sed 's@^./@@' | sed 's@//*@/@g') 36 | for path in $dockerfiles; do 37 | # Generate a tag by replacing the first slash with a colon and all remaining slashes with a dash. 38 | tag=$(echo $path | sed 's@/@:@' | sed 's@/@-@g') 39 | log_msg "Building docker image $tag (from $path)" 40 | if ! docker_build -t "$tag" "$path"; then 41 | failed_builds+=("$tag") 42 | else 43 | if [ ! -z "$BUILD_NUMBER" ]; then 44 | # Remove the image if we are running on Jenkins. 45 | docker rmi "$tag" 46 | fi 47 | tags+=("$tag") 48 | fi 49 | done 50 | 51 | if [ ${#failed_builds[@]} -eq 0 ]; then 52 | log_msg "All builds succeeded." 53 | else 54 | log_msg "Failed to build the following images:" 55 | for tag in ${failed_builds[@]}; do 56 | echo " $tag" 57 | done 58 | exit ${#failed_builds[@]} 59 | fi 60 | 61 | # Image tests: 62 | 63 | assert_equals() { 64 | local actual=$1 65 | local expected=$2 66 | local test_name=$3 67 | 68 | if [ "$actual" != "$expected" ]; then 69 | msg="$test_name: '$actual' is not equal to '$expected'" 70 | failed_tests+=("$msg") 71 | fi 72 | } 73 | 74 | assert_contains() { 75 | local actual="$1" 76 | local expected_substring="$2" 77 | local test_name="$3" 78 | 79 | if [[ "$actual" != *"$expected_substring"* ]]; then 80 | msg="$test_name: '$actual' does not contain '$expected_substring'" 81 | failed_tests+=("$msg") 82 | fi 83 | } 84 | 85 | failed_tests=() 86 | 87 | # Iterate over every circle-test.sh script in any subdirectory 88 | #circle_tests=$(find "$dir" -mindepth 2 -name circle-test.sh -print0) 89 | #for path in $circle_tests; do 90 | # log_msg "Executing $path" 91 | # . $path 92 | #done 93 | 94 | if [ ${#failed_tests[@]} -eq 0 ]; then 95 | log_msg "All tests succeeded." 96 | else 97 | log_msg "The following tests failed:" 98 | for ((i = 0; i < ${#failed_tests[@]}; i++)); do 99 | echo " ${failed_tests[$i]}" 100 | done 101 | exit ${#failed_tests[@]} 102 | fi 103 | 104 | -------------------------------------------------------------------------------- /dockerlib/dockerlib/version.go: -------------------------------------------------------------------------------- 1 | package dockerlib 2 | 3 | import ( 4 | "bufio" 5 | "bytes" 6 | "encoding/json" 7 | "fmt" 8 | "os" 9 | "path/filepath" 10 | "reflect" 11 | "strconv" 12 | "strings" 13 | ) 14 | 15 | type Version struct { 16 | segments []int 17 | } 18 | 19 | func NewVersion(s string) (*Version, error) { 20 | if strings.HasPrefix(s, "v") { 21 | s = s[1:] 22 | } 23 | parts := strings.Split(s, ".") 24 | segments := make([]int, len(parts)) 25 | for i, p := range parts { 26 | v, err := strconv.Atoi(p) 27 | if err != nil { 28 | return nil, fmt.Errorf("malformed version: %s", s) 29 | } 30 | segments[i] = v 31 | } 32 | return &Version{segments: segments}, nil 33 | } 34 | 35 | func (v *Version) LessThan(other *Version) bool { 36 | for i, s := range v.segments { 37 | if i >= len(other.segments) { 38 | return false 39 | } 40 | if a, b := s, other.segments[i]; a != b { 41 | return a < b 42 | } 43 | } 44 | return false 45 | } 46 | 47 | func (v *Version) Segments() []int { 48 | return v.segments 49 | } 50 | 51 | func (v *Version) String() string { 52 | var buf bytes.Buffer 53 | for i, s := range v.segments { 54 | if i > 0 { 55 | buf.WriteString(".") 56 | } 57 | buf.WriteString(strconv.Itoa(s)) 58 | } 59 | return buf.String() 60 | } 61 | 62 | func (v *Version) UnmarshalJSON(data []byte) error { 63 | var s string 64 | if err := json.Unmarshal(data, &s); err != nil { 65 | return err 66 | } 67 | 68 | version, err := NewVersion(s) 69 | if err != nil { 70 | return err 71 | } 72 | *v = *version 73 | return nil 74 | } 75 | 76 | type Versions []*Version 77 | 78 | func (a Versions) Len() int { return len(a) } 79 | func (a Versions) Less(i, j int) bool { return a[i].LessThan(a[j]) } 80 | func (a Versions) Swap(i, j int) { a[i], a[j] = a[j], a[i] } 81 | 82 | // Contains returns true if this array contains the version. 83 | func (a Versions) Contains(other *Version) bool { 84 | for _, v := range a { 85 | if reflect.DeepEqual(v.segments, other.segments) { 86 | return true 87 | } 88 | } 89 | return false 90 | } 91 | 92 | // Latest returns the latest version from an array of version strings. 93 | func (a Versions) Latest() *Version { 94 | var latest *Version 95 | for _, v := range a { 96 | if latest == nil || latest.LessThan(v) { 97 | latest = v 98 | } 99 | } 100 | return latest 101 | } 102 | 103 | // DockerfileVersion retrieves the version from a Dockerfile. 104 | func DockerfileVersion(dir string) (*Version, error) { 105 | f, err := os.Open(filepath.Join(dir, "Dockerfile")) 106 | if err != nil { 107 | return nil, err 108 | } 109 | defer f.Close() 110 | 111 | scanner := bufio.NewScanner(f) 112 | for scanner.Scan() { 113 | line := scanner.Text() 114 | if !strings.HasPrefix(line, "ENV ") { 115 | continue 116 | } 117 | 118 | parts := strings.Split(line, " ") 119 | if len(parts) != 3 || !strings.HasSuffix(parts[1], "_VERSION") { 120 | continue 121 | } 122 | 123 | // Split the version on a dash. 124 | sections := strings.Split(parts[2], "-") 125 | return NewVersion(sections[0]) 126 | } 127 | return nil, nil 128 | } 129 | -------------------------------------------------------------------------------- /influxdb/2.0/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates gnupg run-parts && \ 5 | update-ca-certificates 6 | 7 | RUN addgroup -S -g 1000 influxdb && \ 8 | adduser -S -G influxdb -u 1000 -h /home/influxdb -s /bin/sh influxdb && \ 9 | mkdir -p /home/influxdb && \ 10 | chown -R influxdb:influxdb /home/influxdb 11 | 12 | # Install gosu for easy step-down from root. 13 | # https://github.com/tianon/gosu/releases 14 | ENV GOSU_VER 1.12 15 | RUN set -eux; \ 16 | ARCH="$(apk --print-arch)" && \ 17 | case "${ARCH}" in \ 18 | x86_64) ARCH=amd64;; \ 19 | aarch64) ARCH=arm64;; \ 20 | *) echo "Unsupported architecture: ${ARCH}"; exit 1;; \ 21 | esac && \ 22 | wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$ARCH"; \ 23 | wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$ARCH.asc"; \ 24 | export GNUPGHOME="$(mktemp -d)"; \ 25 | gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ 26 | gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ 27 | gpgconf --kill all; \ 28 | rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ 29 | chmod +x /usr/local/bin/gosu; \ 30 | gosu --version; \ 31 | gosu nobody true 32 | 33 | ENV INFLUXDB_VERSION 2.0.9 34 | RUN set -eux && \ 35 | ARCH="$(apk --print-arch)" && \ 36 | if [ ${ARCH} = x86_64 ]; then \ 37 | ARCH=amd64; \ 38 | elif [ ${ARCH} = aarch64 ]; then \ 39 | ARCH=arm64; \ 40 | else \ 41 | echo "Unsupported architecture: ${ARCH}" && exit 1; \ 42 | fi && \ 43 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc && \ 44 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 45 | export GNUPGHOME="$(mktemp -d)" && \ 46 | echo "disable-ipv6" >> $GNUPGHOME/dirmngr.conf && \ 47 | gpg --keyserver keys.openpgp.org --recv-keys 8C2D403D3C3BDB81A4C27C883C3E4B7317FFE40A && \ 48 | gpg --batch --verify influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 49 | tar xzf influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 50 | cp influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}/influx* /usr/local/bin/ && \ 51 | rm -rf "$GNUPGHOME" influxdb2.key influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}* && \ 52 | influxd version && \ 53 | influx version 54 | 55 | # Create standard directories expected by the entry-point. 56 | RUN mkdir /docker-entrypoint-initdb.d && \ 57 | mkdir -p /var/lib/influxdb2 && \ 58 | chown -R influxdb:influxdb /var/lib/influxdb2 && \ 59 | mkdir -p /etc/influxdb2 && \ 60 | chown -R influxdb:influxdb /etc/influxdb2 61 | VOLUME /var/lib/influxdb2 /etc/influxdb2 62 | 63 | COPY default-config.yml /etc/defaults/influxdb2/config.yml 64 | COPY entrypoint.sh /entrypoint.sh 65 | 66 | ENTRYPOINT ["/entrypoint.sh"] 67 | CMD ["influxd"] 68 | 69 | EXPOSE 8086 70 | 71 | ENV INFLUX_CONFIGS_PATH /etc/influxdb2/influx-configs 72 | ENV INFLUXD_INIT_PORT 9999 73 | ENV INFLUXD_INIT_PING_ATTEMPTS 600 74 | ENV DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME default 75 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-upgrade-user-scripts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | declare -r V1_DB_PATH=$(dirname ${SCRIPT_DIR})/tmp/v1db 6 | source ${SCRIPT_DIR}/common.sh 7 | 8 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 scripts=$6 9 | 10 | echo "$TEST_CREATE_DBRP_SCRIPT" > ${scripts}/1-create-dbrp.sh 11 | echo "$TEST_CREATE_V1_AUTH_SCRIPT" > ${scripts}/2-create-v1-auth.sh 12 | chmod +x ${scripts}/1-create-dbrp.sh 13 | chmod +x ${scripts}/2-create-v1-auth.sh 14 | 15 | declare -ra docker_run_influxd=( 16 | docker run -i -d 17 | --name=${container_name} 18 | -u $(id -u):influxdb 19 | -p 8086:8086 20 | -v ${data}:/var/lib/influxdb2 21 | -v ${config}:/etc/influxdb2 22 | -v ${V1_DB_PATH}:/var/lib/influxdb 23 | -v ${scripts}:/docker-entrypoint-initdb.d 24 | -e DOCKER_INFLUXDB_INIT_MODE=upgrade 25 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 26 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 27 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 28 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 29 | -e DOCKER_INFLUXDB_INIT_RETENTION=${TEST_RETENTION_SECONDS}s 30 | influxdb:${tag} influxd 31 | ) 32 | 33 | log_msg Booting 2.x container in upgrade mode 34 | if ! ${docker_run_influxd[@]} > /dev/null; then 35 | log_msg Error: Failed to launch container 36 | exit 1 37 | fi 38 | wait_container_ready 39 | 40 | log_msg Checking onboarding API after recreating container 41 | onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 42 | 43 | if [[ ${onboarding_allowed} != 'false' ]]; then 44 | log_msg Error: Onboarding allowed after recreating container 45 | exit 1 46 | fi 47 | 48 | # Get the auth token generated by upgrade. 49 | declare -r auth_token=$(extract_token ${container_name}) 50 | 51 | log_msg Checking org list after recreating container 52 | declare -r orgs=$(curl -s -H "Authorization: Token ${auth_token}" localhost:8086/api/v2/orgs | jq -r .orgs[].name) 53 | if [[ ${orgs} != ${TEST_ORG} ]]; then 54 | log_msg Error: Bad org list after recreating container 55 | echo ${orgs} 56 | exit 1 57 | fi 58 | 59 | log_msg Checking bucket list after recreating container 60 | declare -r buckets=($(curl -s -H "Authorization: Token ${auth_token}" localhost:8086/api/v2/buckets | jq -r .buckets[].name | sort -d)) 61 | if [[ $(join_array ${buckets[@]}) != "bucket,empty/autogen,_monitoring,mydb/1week,mydb/autogen,_tasks,test/autogen" ]]; then 62 | log_msg Error: Bad bucket list after recreating container 63 | echo ${buckets[@]} 64 | exit 1 65 | fi 66 | 67 | log_msg Checking V1 user list after recreating container 68 | declare -r users=($(curl -s -H "Authorization: Token ${auth_token}" localhost:8086/private/legacy/authorizations | jq -r .authorizations[].token | sort -d)) 69 | if [[ $(join_array ${users[@]}) != "reader,readerwriter,${TEST_V1_USER},writer" ]]; then 70 | log_msg Error: Bad user list after recreating container 71 | echo ${users[@]} 72 | exit 1 73 | fi 74 | 75 | log_msg Checking we can read from V1 API 76 | declare -ra curl_v1=( 77 | curl -s 78 | -u ${TEST_V1_USER}:${TEST_V1_PASSWORD} 79 | --data-urlencode db=${TEST_V1_DB} 80 | --data-urlencode rp=${TEST_V1_RP} 81 | --data-urlencode q='SHOW MEASUREMENTS' 82 | localhost:8086/query 83 | ) 84 | declare -r measurements=$("${curl_v1[@]}" | jq -r .results[].statement_id) 85 | if [[ "${measurements}" != 0 ]]; then 86 | log_msg Got unexpected response from V1 API 87 | echo ${measurements} 88 | exit 1 89 | fi 90 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-setup-no-rp: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | declare -ra docker_run_influxd=( 10 | docker run -i -d 11 | --name=${container_name} 12 | -u $(id -u):influxdb 13 | -p 8086:8086 14 | -v ${data}:/var/lib/influxdb2 15 | -v ${config}:/etc/influxdb2 16 | -e DOCKER_INFLUXDB_INIT_MODE=setup 17 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 18 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 19 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 20 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 21 | influxdb:${tag} influxd 22 | ) 23 | 24 | log_msg Booting 2.x container in setup mode 25 | if ! ${docker_run_influxd[@]} > /dev/null; then 26 | log_msg Error: Failed to launch container 27 | exit 1 28 | fi 29 | wait_container_ready 30 | 31 | # Check that the DB reports it's been set up. 32 | log_msg Checking onboarding API post-start 33 | declare onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 34 | if [[ ${onboarding_allowed} != 'false' ]]; then 35 | log_msg Error: Onboarding allowed post-start 36 | exit 1 37 | fi 38 | 39 | # Get the auth token generated by setup. 40 | declare -r auth_token=$(extract_token ${container_name}) 41 | 42 | # Make sure we can use the generated auth token to find the resources we expect. 43 | log_msg Checking org list post-setup 44 | declare orgs=$(curl -s -H "Authorization: Token ${auth_token}" localhost:8086/api/v2/orgs | jq -r .orgs[].name) 45 | if [[ ${orgs} != ${TEST_ORG} ]]; then 46 | log_msg Error: Bad org list post-setup 47 | echo ${orgs} 48 | exit 1 49 | fi 50 | 51 | log_msg Checking bucket list post-setup 52 | declare buckets=$(curl -s -H "Authorization: Token ${auth_token}" "localhost:8086/api/v2/buckets?name=${TEST_BUCKET}" | jq -r .buckets[].name) 53 | if [[ ${buckets} != ${TEST_BUCKET} ]]; then 54 | log_msg Error: Bad bucket list post-setup 55 | echo ${buckets} 56 | exit 1 57 | fi 58 | 59 | # Destroy the container 60 | log_msg Tearing down 2.x container 61 | docker stop ${container_name} > /dev/null 62 | docker logs ${container_name} > ${logs}/init-docker-stdout.log 2> ${logs}/init-docker-stderr.log 63 | docker rm ${container_name} > /dev/null 64 | 65 | # Check that files were persisted to the host. 66 | if [ ! -f ${data}/influxd.bolt ]; then 67 | log_msg Error: BoltDB not persisted to host directory 68 | exit 1 69 | fi 70 | if [ ! -f ${config}/influx-configs ]; then 71 | log_msg Error: CLI configs not persisted to host directory 72 | exit 1 73 | fi 74 | 75 | # Create a new container using the same mount-points and env. 76 | # The INIT_MODE should be ignored since the bolt file is present. 77 | log_msg Booting another 2.x container 78 | if ! ${docker_run_influxd[@]} > /dev/null; then 79 | log_msg Error: failed to launch container 80 | exit 1 81 | fi 82 | wait_container_ready 83 | 84 | # Make sure the DB still reports that it's been set up. 85 | log_msg Checking onboarding API after recreating container 86 | onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 87 | 88 | if [[ ${onboarding_allowed} != 'false' ]]; then 89 | log_msg Error: Onboarding allowed after recreating container 90 | exit 1 91 | fi 92 | 93 | # Make sure we can still use the generated auth token to find the resources we expect. 94 | log_msg Checking org list after recreating container 95 | declare orgs=$(curl -s -H "Authorization: Token ${auth_token}" localhost:8086/api/v2/orgs | jq -r .orgs[].name) 96 | if [[ ${orgs} != ${TEST_ORG} ]]; then 97 | log_msg Error: Bad org list post-setup 98 | echo ${orgs} 99 | exit 1 100 | fi 101 | 102 | log_msg Checking bucket list after recreating container 103 | declare buckets=$(curl -s -H "Authorization: Token ${auth_token}" "localhost:8086/api/v2/buckets?name=${TEST_BUCKET}" | jq -r .buckets[].name) 104 | if [[ ${buckets} != ${TEST_BUCKET} ]]; then 105 | log_msg Error: Bad bucket list post-setup 106 | echo ${buckets} 107 | exit 1 108 | fi 109 | -------------------------------------------------------------------------------- /influxdb/2.1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:buster-curl 2 | 3 | RUN groupadd -r influxdb --gid=1000 && \ 4 | useradd -r -g influxdb --uid=1000 --home-dir=/home/influxdb --shell=/bin/bash influxdb && \ 5 | mkdir -p /home/influxdb && \ 6 | chown -R influxdb:influxdb /home/influxdb 7 | 8 | # Install gosu for easy step-down from root. 9 | # https://github.com/tianon/gosu/releases 10 | ENV GOSU_VER 1.12 11 | RUN set -eux; \ 12 | dpkgArch="$(dpkg --print-architecture)" && \ 13 | wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$dpkgArch" && \ 14 | wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$dpkgArch.asc" && \ 15 | export GNUPGHOME="$(mktemp -d)" && \ 16 | gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \ 17 | gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu && \ 18 | gpgconf --kill all && \ 19 | rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc && \ 20 | chmod +x /usr/local/bin/gosu && \ 21 | gosu --version && \ 22 | gosu nobody true 23 | 24 | # Install the infuxd server 25 | ENV INFLUXDB_VERSION 2.1.0 26 | RUN set -eux && \ 27 | ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 28 | case "${dpkgArch##*-}" in \ 29 | amd64) ARCH='amd64';; \ 30 | arm64) ARCH='arm64';; \ 31 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 32 | esac && \ 33 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc && \ 34 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 35 | export GNUPGHOME="$(mktemp -d)" && \ 36 | echo "disable-ipv6" >> $GNUPGHOME/dirmngr.conf && \ 37 | gpg --batch --keyserver keys.openpgp.org --recv-keys 8C2D403D3C3BDB81A4C27C883C3E4B7317FFE40A && \ 38 | gpg --batch --verify influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 39 | tar xzf influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 40 | cp influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}/influxd /usr/local/bin/influxd && \ 41 | rm -rf "$GNUPGHOME" influxdb2.key influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}* && \ 42 | influxd version 43 | 44 | # Install the influx CLI 45 | ENV INFLUX_CLI_VERSION 2.2.0 46 | RUN set -eux && \ 47 | ARCH= && dpkgArch="$(dpkg --print-architecture)" && \ 48 | case "${dpkgArch##*-}" in \ 49 | amd64) ARCH='amd64';; \ 50 | arm64) ARCH='arm64';; \ 51 | *) echo "Unsupported architecture: ${dpkgArch}"; exit 1;; \ 52 | esac && \ 53 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz.asc && \ 54 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz && \ 55 | export GNUPGHOME="$(mktemp -d)" && \ 56 | echo "disable-ipv6" >> $GNUPGHOME/dirmngr.conf && \ 57 | gpg --batch --keyserver keys.openpgp.org --recv-keys 8C2D403D3C3BDB81A4C27C883C3E4B7317FFE40A && \ 58 | gpg --batch --verify influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz.asc influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz && \ 59 | tar xzf influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz && \ 60 | cp influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}/influx /usr/local/bin/influx && \ 61 | rm -rf "$GNUPGHOME" influxdb2.key influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}* && \ 62 | influx version 63 | 64 | # Create standard directories expected by the entry-point. 65 | RUN mkdir /docker-entrypoint-initdb.d && \ 66 | mkdir -p /var/lib/influxdb2 && \ 67 | chown -R influxdb:influxdb /var/lib/influxdb2 && \ 68 | mkdir -p /etc/influxdb2 && \ 69 | chown -R influxdb:influxdb /etc/influxdb2 70 | VOLUME /var/lib/influxdb2 /etc/influxdb2 71 | 72 | COPY default-config.yml /etc/defaults/influxdb2/config.yml 73 | COPY entrypoint.sh /entrypoint.sh 74 | 75 | ENTRYPOINT ["/entrypoint.sh"] 76 | CMD ["influxd"] 77 | 78 | EXPOSE 8086 79 | 80 | ENV INFLUX_CONFIGS_PATH /etc/influxdb2/influx-configs 81 | ENV INFLUXD_INIT_PORT 9999 82 | ENV INFLUXD_INIT_PING_ATTEMPTS 600 83 | ENV DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME default 84 | -------------------------------------------------------------------------------- /influxdb/test/test-2x-e2e.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | declare -r TESTCASE_DIR=${SCRIPT_DIR}/cases 6 | declare -r IMG_DIR=$(dirname ${SCRIPT_DIR}) 7 | 8 | declare -r TMP=${SCRIPT_DIR}/tmp 9 | declare -r LOGS=${SCRIPT_DIR}/logs 10 | 11 | source ${TESTCASE_DIR}/common.sh 12 | 13 | ##################### 14 | ##### UTILITIES ##### 15 | ##################### 16 | 17 | function ensure_jq () { 18 | if ! which jq > /dev/null; then 19 | log_msg Error: 'jq' required to run tests 20 | exit 1 21 | fi 22 | } 23 | 24 | function tag_suffix () { 25 | if [ -n "$CIRCLE_BUILD_NUM" ]; then 26 | echo ${CIRCLE_BUILD_NUM} 27 | else 28 | date '+%Y-%m-%dT%H-%M-%S' 29 | fi 30 | } 31 | 32 | ########################### 33 | ##### SETUP / CLEANUP ##### 34 | ########################### 35 | 36 | # Reuse a 1.x data zip from influxdb's tests to save time/effort. 37 | declare -r INFLUXDB_1x_DATA_COMMIT=c62d3f2d8df917ce06741e98a72b7763fff875c8 38 | declare -r INFLUXDB_1x_DATA_URL=https://github.com/influxdata/influxdb/raw/${INFLUXDB_1x_DATA_COMMIT}/cmd/influxd/upgrade/testdata/v1db.zip 39 | 40 | function get_1x_data () { 41 | curl -sL -o ${TMP}/data.zip ${INFLUXDB_1x_DATA_URL} 42 | unzip -qq ${TMP}/data.zip -d ${TMP} 43 | rm ${TMP}/data.zip 44 | } 45 | 46 | function cleanup () { 47 | local -ra leftover_containers=($(docker ps -a -q -f name=*${suffix})) 48 | if [ ${#leftover_containers[@]} -gt 0 ]; then 49 | log_msg Cleaning up leftover containers... 50 | docker stop ${leftover_containers[@]} 51 | docker rm ${leftover_containers[@]} 52 | fi 53 | docker image rm -f influxdb:${1}-${2} influxdb:${1}-alpine-${2} 54 | } 55 | 56 | ####################### 57 | ##### ENTRY-POINT ##### 58 | ####################### 59 | 60 | function main () { 61 | if [[ $# = 0 ]]; then 62 | >&2 echo Usage: $0 '' '...' 63 | exit 1 64 | fi 65 | local -r version=$1 66 | shift 67 | 68 | ensure_jq 69 | 70 | local -r suffix=$(tag_suffix) 71 | trap "cleanup ${version} ${suffix}" EXIT 72 | 73 | log_msg Building test images 74 | docker build -t influxdb:${version}-${suffix} ${IMG_DIR}/${version} 75 | docker build -t influxdb:${version}-alpine-${suffix} ${IMG_DIR}/${version}/alpine 76 | 77 | rm -rf ${TMP} ${LOGS} 78 | mkdir -p ${TMP} ${LOGS} 79 | 80 | log_msg Downloading 1.x data archive 81 | get_1x_data 82 | 83 | local -ra tests=($(find ${TESTCASE_DIR} -name 'test-*')) 84 | local -a failed_tests=() 85 | 86 | for script in ${tests[@]}; do 87 | local tc=$(basename ${script}) 88 | 89 | if [[ $# > 0 && ${tc} != "$1" ]]; then 90 | continue 91 | fi 92 | 93 | for prefix in ${version} ${version}-alpine; do 94 | # Define standard variables for the test case. 95 | local tag=${prefix}-${suffix} 96 | local container=${tc}_${suffix} 97 | local data=${TMP}/${tc}/${prefix}/data 98 | local config=${TMP}/${tc}/${prefix}/config 99 | local logs=${LOGS}/${tc}/${prefix} 100 | local scripts=${TMP}/${tc}/${prefix}/scripts 101 | mkdir -p ${data} ${config} ${logs} ${scripts} 102 | 103 | local description="${tc} (${prefix})" 104 | log_msg Running test "${description}"... 105 | set +e 106 | ${script} ${tag} ${container} ${data} ${config} ${logs} ${scripts} 107 | local test_status=$? 108 | set -e 109 | if [ ! ${test_status} -eq 0 ]; then 110 | failed_tests+=("${description}") 111 | docker logs ${container} > ${logs}/docker-stdout.log 2> ${logs}/docker-stderr.log || true 112 | fi 113 | log_msg Cleaning up test "${description}"... 114 | docker stop ${container} >/dev/null && docker rm ${container} >/dev/null || true 115 | done 116 | done 117 | 118 | if [ ${#failed_tests[@]} -eq 0 ]; then 119 | log_msg All tests succeeded 120 | else 121 | log_msg Some tests failed: 122 | for tc in "${failed_tests[@]}"; do 123 | echo -e "\t${tc}" 124 | done 125 | exit 1 126 | fi 127 | } 128 | 129 | main ${@} 130 | -------------------------------------------------------------------------------- /influxdb/2.1/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.14 2 | 3 | RUN echo 'hosts: files dns' >> /etc/nsswitch.conf 4 | RUN apk add --no-cache tzdata bash ca-certificates gnupg run-parts && \ 5 | update-ca-certificates 6 | 7 | RUN addgroup -S -g 1000 influxdb && \ 8 | adduser -S -G influxdb -u 1000 -h /home/influxdb -s /bin/sh influxdb && \ 9 | mkdir -p /home/influxdb && \ 10 | chown -R influxdb:influxdb /home/influxdb 11 | 12 | # Install gosu for easy step-down from root. 13 | # https://github.com/tianon/gosu/releases 14 | ENV GOSU_VER 1.12 15 | RUN set -eux; \ 16 | ARCH="$(apk --print-arch)" && \ 17 | case "${ARCH}" in \ 18 | x86_64) ARCH=amd64;; \ 19 | aarch64) ARCH=arm64;; \ 20 | *) echo "Unsupported architecture: ${ARCH}"; exit 1;; \ 21 | esac && \ 22 | wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$ARCH"; \ 23 | wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VER/gosu-$ARCH.asc"; \ 24 | export GNUPGHOME="$(mktemp -d)"; \ 25 | gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ 26 | gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ 27 | gpgconf --kill all; \ 28 | rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ 29 | chmod +x /usr/local/bin/gosu; \ 30 | gosu --version; \ 31 | gosu nobody true 32 | 33 | # Install the infuxd server 34 | ENV INFLUXDB_VERSION 2.1.0 35 | RUN set -eux && \ 36 | ARCH="$(apk --print-arch)" && \ 37 | if [ ${ARCH} = x86_64 ]; then \ 38 | ARCH=amd64; \ 39 | elif [ ${ARCH} = aarch64 ]; then \ 40 | ARCH=arm64; \ 41 | else \ 42 | echo "Unsupported architecture: ${ARCH}" && exit 1; \ 43 | fi && \ 44 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc && \ 45 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 46 | export GNUPGHOME="$(mktemp -d)" && \ 47 | echo "disable-ipv6" >> $GNUPGHOME/dirmngr.conf && \ 48 | gpg --keyserver keys.openpgp.org --recv-keys 8C2D403D3C3BDB81A4C27C883C3E4B7317FFE40A && \ 49 | gpg --batch --verify influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz.asc influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 50 | tar xzf influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}.tar.gz && \ 51 | cp influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}/influxd /usr/local/bin/influxd && \ 52 | rm -rf "$GNUPGHOME" influxdb2.key influxdb2-${INFLUXDB_VERSION}-linux-${ARCH}* && \ 53 | influxd version 54 | 55 | # Install the influx CLI 56 | ENV INFLUX_CLI_VERSION 2.2.0 57 | RUN set -eux && \ 58 | ARCH="$(apk --print-arch)" && \ 59 | if [ ${ARCH} = x86_64 ]; then \ 60 | ARCH=amd64; \ 61 | elif [ ${ARCH} = aarch64 ]; then \ 62 | ARCH=arm64; \ 63 | else \ 64 | echo "Unsupported architecture: ${ARCH}" && exit 1; \ 65 | fi && \ 66 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz.asc && \ 67 | wget --no-verbose https://dl.influxdata.com/influxdb/releases/influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz && \ 68 | export GNUPGHOME="$(mktemp -d)" && \ 69 | echo "disable-ipv6" >> $GNUPGHOME/dirmngr.conf && \ 70 | gpg --keyserver keys.openpgp.org --recv-keys 8C2D403D3C3BDB81A4C27C883C3E4B7317FFE40A && \ 71 | gpg --batch --verify influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz.asc influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz && \ 72 | tar xzf influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}.tar.gz && \ 73 | cp influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}/influx /usr/local/bin/influx && \ 74 | rm -rf "$GNUPGHOME" influxdb2.key influxdb2-client-${INFLUX_CLI_VERSION}-linux-${ARCH}* && \ 75 | influx version 76 | 77 | # Create standard directories expected by the entry-point. 78 | RUN mkdir /docker-entrypoint-initdb.d && \ 79 | mkdir -p /var/lib/influxdb2 && \ 80 | chown -R influxdb:influxdb /var/lib/influxdb2 && \ 81 | mkdir -p /etc/influxdb2 && \ 82 | chown -R influxdb:influxdb /etc/influxdb2 83 | VOLUME /var/lib/influxdb2 /etc/influxdb2 84 | 85 | COPY default-config.yml /etc/defaults/influxdb2/config.yml 86 | COPY entrypoint.sh /entrypoint.sh 87 | 88 | ENTRYPOINT ["/entrypoint.sh"] 89 | CMD ["influxd"] 90 | 91 | EXPOSE 8086 92 | 93 | ENV INFLUX_CONFIGS_PATH /etc/influxdb2/influx-configs 94 | ENV INFLUXD_INIT_PORT 9999 95 | ENV INFLUXD_INIT_PING_ATTEMPTS 600 96 | ENV DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME default 97 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-auto-setup-user-specified-token: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | declare -ra docker_run_influxd=( 10 | docker run -i -d 11 | --name=${container_name} 12 | -u $(id -u):influxdb 13 | -p 8086:8086 14 | -v ${data}:/var/lib/influxdb2 15 | -v ${config}:/etc/influxdb2 16 | -e DOCKER_INFLUXDB_INIT_MODE=setup 17 | -e DOCKER_INFLUXDB_INIT_USERNAME=${TEST_USER} 18 | -e DOCKER_INFLUXDB_INIT_PASSWORD=${TEST_PASSWORD} 19 | -e DOCKER_INFLUXDB_INIT_ORG=${TEST_ORG} 20 | -e DOCKER_INFLUXDB_INIT_BUCKET=${TEST_BUCKET} 21 | -e DOCKER_INFLUXDB_INIT_RETENTION=${TEST_RETENTION_SECONDS}s 22 | -e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${TEST_ADMIN_TOKEN} 23 | influxdb:${tag} influxd run 24 | ) 25 | 26 | log_msg Booting 2.x container in setup mode 27 | if ! ${docker_run_influxd[@]} > /dev/null; then 28 | log_msg Error: Failed to launch container 29 | exit 1 30 | fi 31 | wait_container_ready 32 | 33 | # Check that the DB reports it's been set up. 34 | log_msg Checking onboarding API post-start 35 | declare onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 36 | if [[ ${onboarding_allowed} != 'false' ]]; then 37 | log_msg Error: Onboarding allowed post-start 38 | exit 1 39 | fi 40 | 41 | 42 | # Make sure we can use the auth token we passed in to find the resources we expect. 43 | log_msg Checking org list post-setup 44 | declare orgs=$(curl -s -H "Authorization: Token ${TEST_ADMIN_TOKEN}" localhost:8086/api/v2/orgs | jq -r .orgs[].name) 45 | if [[ ${orgs} != ${TEST_ORG} ]]; then 46 | log_msg Error: Bad org list post-setup 47 | echo ${orgs} 48 | exit 1 49 | fi 50 | 51 | log_msg Checking bucket list post-setup 52 | declare buckets=$(curl -s -H "Authorization: Token ${TEST_ADMIN_TOKEN}" localhost:8086/api/v2/buckets?name=${TEST_BUCKET} | jq -r .buckets[].name) 53 | if [[ ${buckets} != ${TEST_BUCKET} ]]; then 54 | log_msg Error: Bad bucket list post-setup 55 | echo ${buckets} 56 | exit 1 57 | fi 58 | 59 | # Destroy the container 60 | log_msg Tearing down 2.x container 61 | docker stop ${container_name} > /dev/null 62 | docker logs ${container_name} > ${logs}/init-docker-stdout.log 2> ${logs}/init-docker-stderr.log 63 | docker rm ${container_name} > /dev/null 64 | 65 | # Check that files were persisted to the host. 66 | if [ ! -f ${data}/influxd.bolt ]; then 67 | log_msg Error: BoltDB not persisted to host directory 68 | exit 1 69 | fi 70 | if [ ! -f ${config}/influx-configs ]; then 71 | log_msg Error: CLI configs not persisted to host directory 72 | exit 1 73 | fi 74 | 75 | # Create a new container using the same mount-points and env. 76 | # The INIT_MODE should be ignored since the bolt file is present. 77 | log_msg Booting another 2.x container 78 | if ! ${docker_run_influxd[@]} > /dev/null; then 79 | log_msg Error: failed to launch container 80 | exit 1 81 | fi 82 | wait_container_ready 83 | 84 | # Make sure the DB still reports that it's been set up. 85 | log_msg Checking onboarding API after recreating container 86 | onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 87 | 88 | if [[ ${onboarding_allowed} != 'false' ]]; then 89 | log_msg Error: Onboarding allowed after recreating container 90 | exit 1 91 | fi 92 | 93 | # Make sure we can still use the generated auth token to find the resources we expect. 94 | log_msg Checking org list after recreating container 95 | declare orgs=$(curl -s -H "Authorization: Token ${TEST_ADMIN_TOKEN}" localhost:8086/api/v2/orgs | jq -r .orgs[].name) 96 | if [[ ${orgs} != ${TEST_ORG} ]]; then 97 | log_msg Error: Bad org list post-setup 98 | echo ${orgs} 99 | exit 1 100 | fi 101 | 102 | log_msg Checking bucket list after recreating container 103 | declare buckets=$(curl -s -H "Authorization: Token ${TEST_ADMIN_TOKEN}" localhost:8086/api/v2/buckets?name=${TEST_BUCKET} | jq -r .buckets[].name) 104 | if [[ ${buckets} != ${TEST_BUCKET} ]]; then 105 | log_msg Error: Bad bucket list post-setup 106 | echo ${buckets} 107 | exit 1 108 | fi 109 | 110 | log_msg Checking bucket RP 111 | declare rp=$(curl -s -H "Authorization: Token ${TEST_ADMIN_TOKEN}" localhost:8086/api/v2/buckets?name=${TEST_BUCKET} | jq -r .buckets[].retentionRules[].everySeconds) 112 | 113 | if [[ ${rp} != ${TEST_RETENTION_SECONDS} ]]; then 114 | log_msg Error: Bad bucket RP post-setup 115 | echo ${rp} 116 | exit 1 117 | fi 118 | -------------------------------------------------------------------------------- /influxdb/test/cases/test-simple-boot: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | declare -r SCRIPT_DIR=$(cd $(dirname $0) >/dev/null 2>&1 && pwd) 5 | source ${SCRIPT_DIR}/common.sh 6 | 7 | declare -r tag=$1 container_name=$2 data=$3 config=$4 logs=$5 8 | 9 | declare -ra docker_run_influxd=( 10 | docker run -i -d 11 | --name=${container_name} 12 | -u $(id -u):influxdb 13 | -p 8086:8086 14 | -v ${data}:/var/lib/influxdb2 15 | -v ${config}:/etc/influxdb2 16 | influxdb:${tag} 17 | ) 18 | 19 | # First, run the container against the empty data dir. 20 | log_msg Booting 2.x container with no setup logic 21 | if ! ${docker_run_influxd[@]} > /dev/null; then 22 | log_msg Error: Failed to launch container 23 | exit 1 24 | fi 25 | wait_container_ready 26 | 27 | # Make sure the DB reports that it hasn't been set up yet. 28 | log_msg Checking onboarding API pre-setup 29 | declare onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 30 | 31 | if [[ ${onboarding_allowed} != 'true' ]]; then 32 | log_msg Error: Onboarding not allowed pre-setup 33 | exit 1 34 | fi 35 | 36 | # Use the influx CLI to set up the DB. 37 | log_msg Running manual setup 38 | if ! docker exec -i ${container_name} influx setup -f \ 39 | --username ${TEST_USER} \ 40 | --password ${TEST_PASSWORD} \ 41 | --org ${TEST_ORG} \ 42 | --bucket ${TEST_BUCKET}; then 43 | log_msg Error: failed to run 'influx setup' command 44 | exit 1 45 | fi 46 | 47 | # Make sure the DB reports that it's been set up. 48 | log_msg Checking onboarding API post-setup 49 | onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 50 | 51 | if [[ ${onboarding_allowed} != 'false' ]]; then 52 | log_msg Error: Onboarding allowed post-setup 53 | exit 1 54 | fi 55 | 56 | # Get the auth token generated by setup. 57 | declare -r auth_token=$(extract_token ${container_name}) 58 | 59 | # Make sure we can use the generated auth token to find the resources we expect. 60 | log_msg Checking org list post-setup 61 | declare orgs=$(curl -s -H "Authorization: Token ${auth_token}" localhost:8086/api/v2/orgs | jq -r .orgs[].name) 62 | if [[ ${orgs} != ${TEST_ORG} ]]; then 63 | log_msg Error: Bad org list post-setup 64 | echo ${orgs} 65 | exit 1 66 | fi 67 | 68 | log_msg Checking bucket list post-setup 69 | declare buckets=$(curl -s -H "Authorization: Token ${auth_token}" "localhost:8086/api/v2/buckets?name=${TEST_BUCKET}" | jq -r .buckets[].name) 70 | if [[ ${buckets} != ${TEST_BUCKET} ]]; then 71 | log_msg Error: Bad bucket list post-setup 72 | echo ${buckets} 73 | exit 1 74 | fi 75 | 76 | # Destroy the container 77 | log_msg Tearing down 2.x container 78 | docker stop ${container_name} > /dev/null 79 | docker logs ${container_name} > ${logs}/init-docker-stdout.log 2> ${logs}/init-docker-stderr.log 80 | docker rm ${container_name} > /dev/null 81 | 82 | # Check that files were persisted to the host. 83 | if [ ! -f ${data}/influxd.bolt ]; then 84 | log_msg Error: BoltDB not persisted to host directory 85 | exit 1 86 | fi 87 | if [ ! -f ${config}/influx-configs ]; then 88 | log_msg Error: CLI configs not persisted to host directory 89 | exit 1 90 | fi 91 | 92 | # Create a new container using the same mount-points. 93 | log_msg Booting another 2.x container 94 | if ! ${docker_run_influxd[@]} > /dev/null; then 95 | log_msg Error: failed to launch container 96 | exit 1 97 | fi 98 | wait_container_ready 99 | 100 | # Make sure the DB still reports that it's been set up. 101 | log_msg Checking onboarding API after recreating container 102 | onboarding_allowed=$(curl -s localhost:8086/api/v2/setup | jq .allowed) 103 | 104 | if [[ ${onboarding_allowed} != 'false' ]]; then 105 | log_msg Error: Onboarding allowed after recreating container 106 | exit 1 107 | fi 108 | 109 | # Make sure we can still use the generated auth token to find the resources we expect. 110 | log_msg Checking org list after recreating container 111 | declare orgs=$(curl -s -H "Authorization: Token ${auth_token}" localhost:8086/api/v2/orgs | jq -r .orgs[].name) 112 | if [[ ${orgs} != ${TEST_ORG} ]]; then 113 | log_msg Error: Bad org list after recreating container 114 | echo ${orgs} 115 | exit 1 116 | fi 117 | 118 | log_msg Checking bucket list after recreating container 119 | declare buckets=$(curl -s -H "Authorization: Token ${auth_token}" "localhost:8086/api/v2/buckets?name=${TEST_BUCKET}" | jq -r .buckets[].name) 120 | if [[ ${buckets} != ${TEST_BUCKET} ]]; then 121 | log_msg Error: Bad bucket list after recreating container 122 | echo ${buckets} 123 | exit 1 124 | fi 125 | -------------------------------------------------------------------------------- /influxdb/1.7/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.8/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.9/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.7/alpine/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.7/data/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.8/alpine/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.8/data/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.9/data/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.7/data/alpine/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.8/data/alpine/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | -------------------------------------------------------------------------------- /influxdb/1.9/data/alpine/init-influxdb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | AUTH_ENABLED="$INFLUXDB_HTTP_AUTH_ENABLED" 5 | 6 | if [ -z "$AUTH_ENABLED" ]; then 7 | AUTH_ENABLED="$(grep -iE '^\s*auth-enabled\s*=\s*true' /etc/influxdb/influxdb.conf | grep -io 'true' | cat)" 8 | else 9 | AUTH_ENABLED="$(echo "$INFLUXDB_HTTP_AUTH_ENABLED" | grep -io 'true' | cat)" 10 | fi 11 | 12 | INIT_USERS=$([ ! -z "$AUTH_ENABLED" ] && [ ! -z "$INFLUXDB_ADMIN_USER" ] && echo 1 || echo) 13 | 14 | # Check if an environment variable for where to put meta is set. 15 | # If so, then use that directory, otherwise use the default. 16 | if [ -z "$INFLUXDB_META_DIR" ]; then 17 | META_DIR="/var/lib/influxdb/meta" 18 | else 19 | META_DIR="$INFLUXDB_META_DIR" 20 | fi 21 | 22 | if ( [ ! -z "$INIT_USERS" ] || [ ! -z "$INFLUXDB_DB" ] || [ "$(ls -A /docker-entrypoint-initdb.d 2> /dev/null)" ] ) && [ ! "$(ls -d "$META_DIR" 2>/dev/null)" ]; then 23 | 24 | INIT_QUERY="" 25 | CREATE_DB_QUERY="CREATE DATABASE $INFLUXDB_DB" 26 | 27 | if [ ! -z "$INIT_USERS" ]; then 28 | 29 | if [ -z "$INFLUXDB_ADMIN_PASSWORD" ]; then 30 | INFLUXDB_ADMIN_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 31 | echo "INFLUXDB_ADMIN_PASSWORD:$INFLUXDB_ADMIN_PASSWORD" 32 | fi 33 | 34 | INIT_QUERY="CREATE USER \"$INFLUXDB_ADMIN_USER\" WITH PASSWORD '$INFLUXDB_ADMIN_PASSWORD' WITH ALL PRIVILEGES" 35 | elif [ ! -z "$INFLUXDB_DB" ]; then 36 | INIT_QUERY="$CREATE_DB_QUERY" 37 | else 38 | INIT_QUERY="SHOW DATABASES" 39 | fi 40 | 41 | INFLUXDB_INIT_PORT="8086" 42 | 43 | INFLUXDB_HTTP_BIND_ADDRESS=127.0.0.1:$INFLUXDB_INIT_PORT INFLUXDB_HTTP_HTTPS_ENABLED=false influxd "$@" & 44 | pid="$!" 45 | 46 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -execute " 47 | 48 | for i in {30..0}; do 49 | if $INFLUX_CMD "$INIT_QUERY" &> /dev/null; then 50 | break 51 | fi 52 | echo 'influxdb init process in progress...' 53 | sleep 1 54 | done 55 | 56 | if [ "$i" = 0 ]; then 57 | echo >&2 'influxdb init process failed.' 58 | exit 1 59 | fi 60 | 61 | if [ ! -z "$INIT_USERS" ]; then 62 | 63 | INFLUX_CMD="influx -host 127.0.0.1 -port $INFLUXDB_INIT_PORT -username ${INFLUXDB_ADMIN_USER} -password ${INFLUXDB_ADMIN_PASSWORD} -execute " 64 | 65 | if [ ! -z "$INFLUXDB_DB" ]; then 66 | $INFLUX_CMD "$CREATE_DB_QUERY" 67 | fi 68 | 69 | if [ ! -z "$INFLUXDB_USER" ] && [ -z "$INFLUXDB_USER_PASSWORD" ]; then 70 | INFLUXDB_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 71 | echo "INFLUXDB_USER_PASSWORD:$INFLUXDB_USER_PASSWORD" 72 | fi 73 | 74 | if [ ! -z "$INFLUXDB_USER" ]; then 75 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_USER\" WITH PASSWORD '$INFLUXDB_USER_PASSWORD'" 76 | 77 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_USER\"" 78 | 79 | if [ ! -z "$INFLUXDB_DB" ]; then 80 | $INFLUX_CMD "GRANT ALL ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_USER\"" 81 | fi 82 | fi 83 | 84 | if [ ! -z "$INFLUXDB_WRITE_USER" ] && [ -z "$INFLUXDB_WRITE_USER_PASSWORD" ]; then 85 | INFLUXDB_WRITE_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 86 | echo "INFLUXDB_WRITE_USER_PASSWORD:$INFLUXDB_WRITE_USER_PASSWORD" 87 | fi 88 | 89 | if [ ! -z "$INFLUXDB_WRITE_USER" ]; then 90 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_WRITE_USER\" WITH PASSWORD '$INFLUXDB_WRITE_USER_PASSWORD'" 91 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_WRITE_USER\"" 92 | 93 | if [ ! -z "$INFLUXDB_DB" ]; then 94 | $INFLUX_CMD "GRANT WRITE ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_WRITE_USER\"" 95 | fi 96 | fi 97 | 98 | if [ ! -z "$INFLUXDB_READ_USER" ] && [ -z "$INFLUXDB_READ_USER_PASSWORD" ]; then 99 | INFLUXDB_READ_USER_PASSWORD="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo;)" 100 | echo "INFLUXDB_READ_USER_PASSWORD:$INFLUXDB_READ_USER_PASSWORD" 101 | fi 102 | 103 | if [ ! -z "$INFLUXDB_READ_USER" ]; then 104 | $INFLUX_CMD "CREATE USER \"$INFLUXDB_READ_USER\" WITH PASSWORD '$INFLUXDB_READ_USER_PASSWORD'" 105 | $INFLUX_CMD "REVOKE ALL PRIVILEGES FROM \"$INFLUXDB_READ_USER\"" 106 | 107 | if [ ! -z "$INFLUXDB_DB" ]; then 108 | $INFLUX_CMD "GRANT READ ON \"$INFLUXDB_DB\" TO \"$INFLUXDB_READ_USER\"" 109 | fi 110 | fi 111 | 112 | fi 113 | 114 | for f in /docker-entrypoint-initdb.d/*; do 115 | case "$f" in 116 | *.sh) echo "$0: running $f"; . "$f" ;; 117 | *.iql) echo "$0: running $f"; $INFLUX_CMD "$(cat ""$f"")"; echo ;; 118 | *) echo "$0: ignoring $f" ;; 119 | esac 120 | echo 121 | done 122 | 123 | if ! kill -s TERM "$pid" || ! wait "$pid"; then 124 | echo >&2 'influxdb init process failed. (Could not stop influxdb)' 125 | exit 1 126 | fi 127 | 128 | fi 129 | --------------------------------------------------------------------------------