From b049b003f2ed8ef769739d1f066567a99b956809 Mon Sep 17 00:00:00 2001 From: Oleg Gaidarenko Date: Tue, 16 Jul 2019 09:16:11 +0300 Subject: [PATCH] Build: allow dynamically change docker image (#18112) * Build: allow dynamically change docker image Right now, only for couple DBs. With the 2.1, you can do `${TAG:-5.6}` without needing the `.env` file, but it seems it would be better for back-compat to support `.env` right now. Fixes #17891 * Build: add prefix for removal process * Docs: mention makefile command instead of the bash Since we are moving to makefile for things and make command simplifies some of the actions you have to perform to work with different environments * Docs: mention dynamic tags in the docs * Docs: avoid name collision Fixes #16107 --- .gitignore | 7 +++--- Makefile | 2 +- devenv/README.md | 8 +++++-- devenv/create_docker_compose.sh | 24 ++++++++++++------- devenv/docker/blocks/mysql/.env | 1 + .../docker/blocks/mysql/docker-compose.yaml | 2 +- devenv/docker/blocks/postgres/.env | 1 + .../blocks/postgres/docker-compose.yaml | 2 +- 8 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 devenv/docker/blocks/mysql/.env create mode 100644 devenv/docker/blocks/postgres/.env diff --git a/.gitignore b/.gitignore index 2df94cb35c9..dca9e2b2279 100644 --- a/.gitignore +++ b/.gitignore @@ -39,10 +39,11 @@ public/css/*.min.css /data/* /bin/* +# devenv +/devenv/docker-compose.yaml +/devenv/.env + conf/custom.ini -fig.yml -devenv/docker-compose.yml -devenv/docker-compose.yaml /conf/provisioning/**/custom.yaml /conf/provisioning/**/dev.yaml /conf/ldap_dev.toml diff --git a/Makefile b/Makefile index 0557dbd378f..4c161b37194 100644 --- a/Makefile +++ b/Makefile @@ -125,7 +125,7 @@ devenv: devenv-down @cd devenv; \ ./create_docker_compose.sh $(targets) || \ - (rm -rf docker-compose.yaml; exit 1) + (rm -rf {docker-compose.yaml,conf.tmp,.env}; exit 1) @cd devenv; \ docker-compose up -d --build diff --git a/devenv/README.md b/devenv/README.md index eecfb6b7710..48ec3a0d651 100644 --- a/devenv/README.md +++ b/devenv/README.md @@ -22,8 +22,7 @@ found. The dashboards are located in the `devenv/dev-dashboards` folder. # docker-compose with databases ```bash -./create_docker_compose.sh influxdb prometheus2 elastic5 -docker-compose up +make devenv sources=influxdb,prometheus2,elastic5 ``` This command will create a docker compose file with specified databases configured and ready to run. Each database has @@ -31,3 +30,8 @@ a prepared image with some fake data ready to use. For available databases see ` for some databases there are multiple images, for example there is prometheus_mac specifically for Macs or different version. +Some of the blocks support dynamic change of the image version used in docker file. The signature looks like this - `make devenv sources=postgres,openldap name-of-block_version=9.2` - + +```bash +make devenv sources=postgres,openldap postgres_version=9.2 +``` \ No newline at end of file diff --git a/devenv/create_docker_compose.sh b/devenv/create_docker_compose.sh index 5da9e8f5c8f..9fef9636017 100755 --- a/devenv/create_docker_compose.sh +++ b/devenv/create_docker_compose.sh @@ -8,8 +8,8 @@ grafana_config_file=conf.tmp grafana_config=config compose_header_file=docker/compose_header.yml -fig_file=docker-compose.yaml -fig_config=docker-compose.yaml +compose_file=docker-compose.yaml +env_file=.env if [ "$#" == 0 ]; then blocks=`ls $blocks_dir` @@ -24,15 +24,15 @@ if [ "$#" == 0 ]; then exit 0 fi -for file in $grafana_config_file $fig_file; do +for file in $grafana_config_file $compose_file $env_file; do if [ -e $file ]; then echo "Deleting $file" rm $file fi done -echo "Adding Compose header to $fig_file" -cat $compose_header_file >> $fig_file +echo "Adding Compose header to $compose_file" +cat $compose_header_file >> $compose_file for dir in $@; do current_dir=$blocks_dir/$dir @@ -47,10 +47,16 @@ for dir in $@; do echo "" >> $grafana_config_file fi - if [ -e $current_dir/$fig_config ]; then - echo "Adding $current_dir/$fig_config to $fig_file" - cat $current_dir/$fig_config >> $fig_file - echo "" >> $fig_file + if [ -e $current_dir/$compose_file ]; then + echo "Adding $current_dir/$compose_file to $compose_file" + cat $current_dir/$compose_file >> $compose_file + echo "" >> $compose_file + fi + + if [ -e $current_dir/$env_file ]; then + echo "Adding $current_dir/$env_file to .env" + cat $current_dir/$env_file >> .env + echo "" >> .env fi done diff --git a/devenv/docker/blocks/mysql/.env b/devenv/docker/blocks/mysql/.env new file mode 100644 index 00000000000..29440f18d52 --- /dev/null +++ b/devenv/docker/blocks/mysql/.env @@ -0,0 +1 @@ +mysql_version=5.6 diff --git a/devenv/docker/blocks/mysql/docker-compose.yaml b/devenv/docker/blocks/mysql/docker-compose.yaml index 381b04a53c8..d85f3db53ac 100644 --- a/devenv/docker/blocks/mysql/docker-compose.yaml +++ b/devenv/docker/blocks/mysql/docker-compose.yaml @@ -1,5 +1,5 @@ mysql: - image: mysql:5.6 + image: mysql:${mysql_version} environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: grafana diff --git a/devenv/docker/blocks/postgres/.env b/devenv/docker/blocks/postgres/.env new file mode 100644 index 00000000000..2494e5f2ee9 --- /dev/null +++ b/devenv/docker/blocks/postgres/.env @@ -0,0 +1 @@ +postgres_version=9.3 diff --git a/devenv/docker/blocks/postgres/docker-compose.yaml b/devenv/docker/blocks/postgres/docker-compose.yaml index 27736042f7b..3628c4d6771 100644 --- a/devenv/docker/blocks/postgres/docker-compose.yaml +++ b/devenv/docker/blocks/postgres/docker-compose.yaml @@ -1,5 +1,5 @@ postgrestest: - image: postgres:9.3 + image: postgres:${postgres_version} environment: POSTGRES_USER: grafana POSTGRES_PASSWORD: password