Skip to content

Commit 97bf545

Browse files
authored
Merge pull request #33 from metabase/driver-docs-and-scripts
Make DB scripts consistent for driver development
2 parents fcc03fc + ed8ef8f commit 97bf545

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+820
-482
lines changed

_run-druid.sh

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-druid.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run \
12+
-p ${WEB_PORT}:8081 \
13+
-p ${HOST_PORT}:8082 \
14+
-p 8888:8888 \
15+
-e CLUSTER_SIZE=nano-quickstart \
16+
--name ${CONTAINER_NAME} \
17+
--rm \
18+
-d metabase/druid:${DRUID_VERSION}
19+
20+
cat <<EOF
21+
22+
Started Druid ${DRUID_VERSION} on ports ${WEB_PORT}, ${HOST_PORT}, and 8888.
23+
24+
Visit http://localhost:${WEB_PORT} in your browser to view the web console.
25+
26+
EOF
27+
28+
print-druid-vars

_run-mariadb.sh

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-mariadb.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run -p ${HOST_PORT}:3306 \
12+
-e MYSQL_DATABASE=${DB_NAME} \
13+
-e MYSQL_USER=${DB_USER} \
14+
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
15+
--name ${CONTAINER_NAME} \
16+
--rm \
17+
-d mariadb:${MARIADB_VERSION}
18+
19+
cat <<EOF
20+
21+
Started MariaDB ${MARIADB_VERSION} on port ${HOST_PORT}.
22+
23+
Connect with the MySQL CLI tool:
24+
mysql --user=${DB_USER} --host=127.0.0.1 --port=${HOST_PORT} --database=${DB_NAME}
25+
26+
JDBC URL: jdbc:mysql://localhost:${HOST_PORT}/${DB_NAME}?user=${DB_USER}
27+
28+
EOF
29+
30+
print-mariadb-vars

_run-mongo.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-mongo.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run -p ${HOST_PORT}:27017 \
12+
--name ${CONTAINER_NAME} \
13+
--rm \
14+
-d mongo:${MONGO_VERSION}
15+
16+
cat <<EOF
17+
18+
Started MongoDB ${MONGO_VERSION} on port ${HOST_PORT}.
19+
20+
Connect to the database with the MongoDB client:
21+
docker exec -it ${CONTAINER_NAME} mongosh
22+
23+
EOF
24+
25+
print-mongo-vars

_run-mysql.sh

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-mysql.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run -p ${HOST_PORT}:3306 \
12+
-e MYSQL_DATABASE=${DB_NAME} \
13+
-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \
14+
--name ${CONTAINER_NAME} \
15+
--rm \
16+
-d mysql:${MYSQL_VERSION}
17+
18+
cat <<EOF
19+
20+
Started MySQL ${MYSQL_VERSION} on port ${HOST_PORT}.
21+
22+
Connect with the MySQL CLI tool:
23+
mysql --user=${DB_USER} --host=127.0.0.1 --port=${HOST_PORT} --database=${DB_NAME}
24+
25+
JDBC URL: jdbc:mysql://localhost:${HOST_PORT}/${DB_NAME}?user=${DB_USER}
26+
27+
EOF
28+
29+
print-mysql-vars

_run-oracle.sh

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-oracle.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run -p ${HOST_PORT}:1521 \
12+
--name ${CONTAINER_NAME} \
13+
--rm \
14+
-e ORACLE_PASSWORD=${DB_PASSWORD} \
15+
-d gvenzl/oracle-xe:${ORACLE_VERSION}
16+
17+
cat <<EOF
18+
19+
Started Oracle Express Edition ${ORACLE_VERSION} on port ${HOST_PORT}.
20+
Wait 10-20 seconds for it to finish starting.
21+
22+
JDBC URL: jdbc:oracle:thin:@//localhost:${HOST_PORT}/${DB_NAME}?user=${DB_USER}&password=${DB_PASSWORD}
23+
24+
EOF
25+
26+
print-oracle-vars
27+
28+

_run-postgres.sh

+22-24
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,41 @@
11
#!/usr/bin/env bash
22

3-
set pipefail -euo
4-
53
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-postgres.sh"
6+
67
source "$SOURCE_DIR/common.sh"
78

8-
CONTAINER_NAME=pgsql-${PG_VERSION}-metabase
9-
DB_NAME=metabase
10-
DB_USER=metabase
11-
DB_PASSWORD=Password1234
12-
HOST_PORT=${PGSQL_PORT:-5432}
13-
DATA_DIR=${PGSQL_DATA_DIR:-$HOME/metabase-pgsql-data}
9+
DATA_DIR=${HOME}/metabase-pgsql-${PG_VERSION}-data
1410
DOCKER_NETWORK=psql-metabase-network
1511

16-
kill-existing $CONTAINER_NAME
17-
create-network-if-needed $DOCKER_NETWORK
12+
kill-existing ${CONTAINER_NAME}
13+
create-network-if-needed ${DOCKER_NETWORK}
1814

1915
docker run \
2016
--rm \
2117
-d \
22-
-p $HOST_PORT:5432 \
23-
--network $DOCKER_NETWORK \
24-
-e POSTGRES_USER=$DB_USER \
25-
-e POSTGRES_DB=$DB_NAME \
26-
-e POSTGRES_PASSWORD=$DB_PASSWORD \
18+
-p ${HOST_PORT}:5432 \
19+
--network ${DOCKER_NETWORK} \
20+
-e POSTGRES_USER=${DB_USER} \
21+
-e POSTGRES_DB=${DB_NAME} \
22+
-e POSTGRES_PASSWORD=${DB_PASSWORD} \
2723
-e PGDATA=/var/lib/postgresql/data \
28-
-v $DATA_DIR:/var/lib/postgresql/data:Z \
29-
--name $CONTAINER_NAME \
24+
-v ${DATA_DIR}:/var/lib/postgresql/data:Z \
25+
--name ${CONTAINER_NAME} \
3026
postgres:${PG_VERSION}
3127

3228
cat << EOF
33-
Started PostgreSQL ${PG_VERSION} port $HOST_PORT via Docker (container name: $CONTAINER_NAME). Data will be persisted in $DATA_DIR on the host machine (delete it to reset).
34-
35-
JDBC URL: jdbc:postgres://localhost:$HOST_PORT/$DB_NAME?user=$DB_USER
3629
37-
Environment variables for Metabase (to use as app DB):
38-
MB_DB_TYPE=postgres MB_DB_DBNAME=$DB_NAME MB_DB_HOST=localhost MB_DB_PASS=$DB_PASSWORD MB_DB_PORT=$HOST_PORT MB_DB_USER=$DB_USER MB_POSTGRES_TEST_USER=$DB_USER
30+
Started PostgreSQL ${PG_VERSION} on port ${HOST_PORT} via Docker (container name: ${CONTAINER_NAME}).
31+
Data will be persisted in ${DATA_DIR} on the host machine (delete it to reset).
3932
4033
To open a SQL client session:
41-
docker run -it --rm --network $DOCKER_NETWORK postgres:12 psql -h $CONTAINER_NAME -U $DB_USER
42-
And enter the DB user password for $DB_USER: $DB_PASSWORD
34+
docker run -it --rm --network ${DOCKER_NETWORK} postgres:${PG_VERSION} psql -h ${CONTAINER_NAME} -U ${DB_USER}
35+
And enter the DB user password for ${DB_USER}: ${DB_PASSWORD}
36+
37+
JDBC URL: jdbc:postgres://localhost:${HOST_PORT}/${DB_NAME}?user=${DB_USER}
38+
4339
EOF
40+
41+
print-postgres-vars

run-presto.sh renamed to _run-presto.sh

+14-12
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
#! /usr/bin/env bash
22

3-
set -euo pipefail
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
44

5-
echo "Removing existing container..."
5+
source "$SOURCE_DIR/env-presto.sh"
66

7-
docker rm -fv presto 2>/dev/null || echo "Nothing to remove"
7+
source "$SOURCE_DIR/common.sh"
88

9-
docker run -p 8080:8080 \
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run -p ${HOST_PORT}:8080 \
1012
-p 8443:8443 \
11-
--name presto \
13+
--name ${CONTAINER_NAME} \
1214
--hostname presto \
1315
--rm \
14-
-d metabase/presto-mb-ci
15-
16-
SERVER_CA_PEM_FILE=/tmp/presto-ssl-ca.pem
17-
SERVER_CA_DER_FILE=/tmp/presto-ssl-ca.der
18-
MODIFIED_CACERTS_FILE=/tmp/cacerts-with-presto-ssl.jks
16+
-d prestodb/presto:${PRESTO_VERSION}
1917

2018
cat << EOF
21-
Started Presto on port 8080 (insecure HTTP) and port 8443 (secure HTTPS) on the host machine
19+
20+
Started Presto on port ${HOST_PORT} (insecure HTTP) and port 8443 (secure HTTPS) on the host machine
2221
2322
To make the self signed certificate that was generated for this Presto instance available to your Java application
2423
(ex: Metabase), perform the following steps after Presto is completely online. You can run
2524
26-
docker logs --tail 5 presto
25+
docker logs --tail 5 ${CONTAINER_NAME}
2726
2827
to see the current output. Once Presto is online, you will see a line containing something like the following:
2928
@@ -44,4 +43,7 @@ also have the JAVA_HOME env var set for this all to work.
4443
Finally, this can be made available to Metabase by adding the following JVM args when starting:
4544
4645
-Djavax.net.ssl.trustStore=$MODIFIED_CACERTS_FILE -Djavax.net.ssl.trustStorePassword=changeit
46+
4747
EOF
48+
49+
print-presto-vars

_run-sparksql.sh

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-sparksql.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run -p ${HOST_PORT}:10000 \
12+
--name ${CONTAINER_NAME} \
13+
--rm \
14+
-d metabase/spark:${SPARKSQL_VERSION}
15+
16+
cat <<EOF
17+
18+
Started Spark SQL ${SPARKSQL_VERSION} on port ${HOST_PORT}.
19+
20+
JDBC URL: jdbc:hive2://localhost:${HOST_PORT}/?user=${DB_USER}&password=${DB_PASSWORD}
21+
For a specific database: jdbc:hive2://localhost:${HOST_PORT}/${DB_NAME}?user=${DB_USER}&password=${DB_PASSWORD}
22+
23+
EOF

_run-sqlserver.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-sqlserver.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
kill-existing ${CONTAINER_NAME}
10+
11+
docker run \
12+
-p ${HOST_PORT}:1433 \
13+
-e ACCEPT_EULA=Y \
14+
-e SA_PASSWORD=${DB_PASSWORD} \
15+
--name ${CONTAINER_NAME} \
16+
--rm \
17+
-d mcr.microsoft.com/mssql/server:${SQLSERVER_VERSION}
18+
19+
cat <<EOF
20+
21+
Started SQL Server ${SQLSERVER_VERSION} on port ${HOST_PORT}.
22+
23+
EOF
24+
25+
print-sqlserver-vars

_run-vertica.sh

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/env-vertica.sh"
6+
7+
source "$SOURCE_DIR/common.sh"
8+
9+
ENV=""
10+
if [[ $(uname -m) == 'arm64' ]]; then
11+
echo "Warning! The database will be likely extremely slow on arm64!"
12+
ENV+=" --env VERTICA_MEMDEBUG=2"
13+
fi
14+
15+
kill-existing ${CONTAINER_NAME}
16+
17+
docker run -p ${HOST_PORT}:5433 \
18+
--name ${CONTAINER_NAME} \
19+
--rm \
20+
${ENV} \
21+
-d opentext/vertica-ce:${VERTICA_VERSION}
22+
23+
cat <<EOF
24+
25+
Started Vertica ${VERTICA_VERSION} on port ${HOST_PORT}.
26+
27+
JDBC URL: jdbc:vertica://localhost:${HOST_PORT}/${DB_NAME}?user=${DB_USER}
28+
29+
EOF
30+
31+
print-vertica-vars

appdb/appdb-mariadb.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/../env-mariadb.sh"
6+
7+
cat <<EOF
8+
Clojure CLI:
9+
10+
clj -J-Dmb.db-type=mysql -J-Dmb.db-port=${HOST_PORT} -J-Dmb.db.dbname=${DB_NAME} -J-Dmb.db.user=${DB_USER} -J-Dmb.db.pass=''
11+
12+
or add a profile for it to your ~/.clojure/deps.edn:
13+
14+
{:profiles
15+
{:user/${CONTAINER_NAME}
16+
{:jvm-opts
17+
["-Dmb.db-type=mysql"
18+
"-Dmb.db-port=${HOST_PORT}"
19+
"-Dmb.db.dbname=${DB_NAME}"
20+
"-Dmb.db.user=${DB_USER}"
21+
"-Dmb.db.pass="]}}}
22+
23+
Environment variables for Metabase (to use as app DB):
24+
MB_DB_TYPE=mysql MB_DB_HOST=localhost MB_DB_PORT=${HOST_PORT} MB_DB_DBNAME=${DB_NAME} MB_DB_USER=${DB_USER} MB_DB_PASS=''
25+
EOF

appdb/appdb-mysql.sh

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#! /usr/bin/env bash
2+
3+
SOURCE_DIR=`dirname "${BASH_SOURCE[0]}"`
4+
5+
source "$SOURCE_DIR/../env-mysql.sh"
6+
7+
cat <<EOF
8+
Clojure CLI:
9+
10+
clj -J-Dmb.db-type=mysql -J-Dmb.db-port=${HOST_PORT} -J-Dmb.db.dbname=${DB_NAME} -J-Dmb.db.user=${DB_USER} -J-Dmb.db.pass=''
11+
12+
or add a profile for it to your ~/.clojure/deps.edn:
13+
14+
{:profiles
15+
{:user/${CONTAINER_NAME}
16+
{:jvm-opts
17+
["-Dmb.db-type=mysql"
18+
"-Dmb.db-port=${HOST_PORT}"
19+
"-Dmb.db.dbname=${DB_NAME}"
20+
"-Dmb.db.user=${DB_USER}"
21+
"-Dmb.db.pass="
22+
"-Dmb.mysql.test.port=${HOST_PORT}"]}}}
23+
24+
Environment variables for Metabase (to use as app DB):
25+
MB_DB_TYPE=mysql MB_DB_HOST=localhost MB_DB_PORT=${HOST_PORT} MB_DB_DBNAME=${DB_NAME} MB_DB_USER=${DB_USER} MB_DB_PASS=''
26+
EOF

0 commit comments

Comments
 (0)