From d9bca78ec5101ca11a4b05842ff339a547278e76 Mon Sep 17 00:00:00 2001 From: grabdoc Date: Thu, 23 Jan 2025 00:20:41 -0600 Subject: [PATCH] #763 - added docker compose files. --- docker-compose/mariadb/api-interaction.sh | 17 +++++++++ docker-compose/mariadb/docker-compose.yml | 40 ++++++++++++++++++++ docker-compose/mariadb/init/01-init.sql | 11 ++++++ docker-compose/mariadb/run.sh | 11 ++++++ docker-compose/mysql/api-interaction.sh | 17 +++++++++ docker-compose/mysql/docker-compose.yml | 40 ++++++++++++++++++++ docker-compose/mysql/init/01-init.sql | 11 ++++++ docker-compose/mysql/run.sh | 11 ++++++ docker-compose/oracle/api-interaction.sh | 17 +++++++++ docker-compose/oracle/docker-compose.yml | 39 +++++++++++++++++++ docker-compose/oracle/init/01-init.sql | 11 ++++++ docker-compose/oracle/run.sh | 11 ++++++ docker-compose/postgresql/api-interaction.sh | 17 +++++++++ docker-compose/postgresql/docker-compose.yml | 18 +++++++++ docker-compose/postgresql/init/01-init.sql | 11 ++++++ docker-compose/postgresql/run.sh | 11 ++++++ docker-compose/sqlserver/api-interaction.sh | 17 +++++++++ docker-compose/sqlserver/docker-compose.yml | 38 +++++++++++++++++++ docker-compose/sqlserver/init/01-init.sql | 11 ++++++ docker-compose/sqlserver/run.sh | 11 ++++++ pom.xml | 21 ++++++++++ 21 files changed, 391 insertions(+) create mode 100644 docker-compose/mariadb/api-interaction.sh create mode 100644 docker-compose/mariadb/docker-compose.yml create mode 100644 docker-compose/mariadb/init/01-init.sql create mode 100644 docker-compose/mariadb/run.sh create mode 100644 docker-compose/mysql/api-interaction.sh create mode 100644 docker-compose/mysql/docker-compose.yml create mode 100644 docker-compose/mysql/init/01-init.sql create mode 100644 docker-compose/mysql/run.sh create mode 100644 docker-compose/oracle/api-interaction.sh create mode 100644 docker-compose/oracle/docker-compose.yml create mode 100644 docker-compose/oracle/init/01-init.sql create mode 100644 docker-compose/oracle/run.sh create mode 100644 docker-compose/postgresql/api-interaction.sh create mode 100644 docker-compose/postgresql/init/01-init.sql create mode 100644 docker-compose/postgresql/run.sh create mode 100644 docker-compose/sqlserver/api-interaction.sh create mode 100644 docker-compose/sqlserver/docker-compose.yml create mode 100644 docker-compose/sqlserver/init/01-init.sql create mode 100644 docker-compose/sqlserver/run.sh diff --git a/docker-compose/mariadb/api-interaction.sh b/docker-compose/mariadb/api-interaction.sh new file mode 100644 index 00000000..2bda2268 --- /dev/null +++ b/docker-compose/mariadb/api-interaction.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Wait for services to be fully up +sleep 15 + +# Base URL for DB2Rest API +BASE_URL="http://localhost/emp/employee" + +# Insert an employee +echo "Inserting employee..." +curl -X POST $BASE_URL \ + -H "Content-Type: application/json" \ + -d '{"name":"Jane Smith"}' + +# Query all employees +echo -e "\nQuerying all employees..." +curl -X GET $BASE_URL diff --git a/docker-compose/mariadb/docker-compose.yml b/docker-compose/mariadb/docker-compose.yml new file mode 100644 index 00000000..dcd9711a --- /dev/null +++ b/docker-compose/mariadb/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.8" +services: + db2rest-service: + image: kdhrubo/db2rest:latest + ports: + - 80:8080 + environment: + DB_URL: "jdbc:mariadb://employee-mariadb:3306/empdb" + DB_USER: "db2rest" + DB_PASSWORD: "db2rest" + INCLUDED_SCHEMAS: public,emp + depends_on: + - employee-mariadb + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"] + interval: 30s + timeout: 10s + retries: 3 + + employee-mariadb: + image: "mariadb:10.6" + container_name: "employee-mariadb" + ports: + - 3306:3306 + environment: + - MYSQL_USER=db2rest + - MYSQL_PASSWORD=db2rest + - MYSQL_DATABASE=empdb + - MYSQL_ROOT_PASSWORD=root + volumes: + - mariadb-data:/var/lib/mysql + - ./init:/docker-entrypoint-initdb.d + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + interval: 20s + timeout: 10s + retries: 5 + +volumes: + mariadb-data: diff --git a/docker-compose/mariadb/init/01-init.sql b/docker-compose/mariadb/init/01-init.sql new file mode 100644 index 00000000..7817934d --- /dev/null +++ b/docker-compose/mariadb/init/01-init.sql @@ -0,0 +1,11 @@ +-- Create employee table +CREATE TABLE employee ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL +); + +-- Insert sample employee +INSERT INTO employee (name) VALUES ('John Doe'); + +-- Query to verify data +SELECT * FROM employee; diff --git a/docker-compose/mariadb/run.sh b/docker-compose/mariadb/run.sh new file mode 100644 index 00000000..98d77b5e --- /dev/null +++ b/docker-compose/mariadb/run.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Start services +docker-compose up -d + +# Run API interaction script +chmod +x api-interaction.sh +./api-interaction.sh + +# Optional: Keep services running +docker-compose logs -f diff --git a/docker-compose/mysql/api-interaction.sh b/docker-compose/mysql/api-interaction.sh new file mode 100644 index 00000000..2bda2268 --- /dev/null +++ b/docker-compose/mysql/api-interaction.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Wait for services to be fully up +sleep 15 + +# Base URL for DB2Rest API +BASE_URL="http://localhost/emp/employee" + +# Insert an employee +echo "Inserting employee..." +curl -X POST $BASE_URL \ + -H "Content-Type: application/json" \ + -d '{"name":"Jane Smith"}' + +# Query all employees +echo -e "\nQuerying all employees..." +curl -X GET $BASE_URL diff --git a/docker-compose/mysql/docker-compose.yml b/docker-compose/mysql/docker-compose.yml new file mode 100644 index 00000000..cc08cc16 --- /dev/null +++ b/docker-compose/mysql/docker-compose.yml @@ -0,0 +1,40 @@ +version: "3.8" +services: + db2rest-service: + image: kdhrubo/db2rest:latest + ports: + - 80:8080 + environment: + DB_URL: "jdbc:mysql://employee-mysql:3306/empdb" + DB_USER: "db2rest" + DB_PASSWORD: "db2rest" + INCLUDED_SCHEMAS: public,emp + depends_on: + - employee-mysql + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"] + interval: 30s + timeout: 10s + retries: 3 + + employee-mysql: + image: "mysql:8.0" + container_name: "employee-mysql" + ports: + - 3306:3306 + environment: + - MYSQL_USER=db2rest + - MYSQL_PASSWORD=db2rest + - MYSQL_DATABASE=empdb + - MYSQL_ROOT_PASSWORD=root + volumes: + - mysql-data:/var/lib/mysql + - ./init:/docker-entrypoint-initdb.d + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + interval: 20s + timeout: 10s + retries: 5 + +volumes: + mysql-data: diff --git a/docker-compose/mysql/init/01-init.sql b/docker-compose/mysql/init/01-init.sql new file mode 100644 index 00000000..7817934d --- /dev/null +++ b/docker-compose/mysql/init/01-init.sql @@ -0,0 +1,11 @@ +-- Create employee table +CREATE TABLE employee ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL +); + +-- Insert sample employee +INSERT INTO employee (name) VALUES ('John Doe'); + +-- Query to verify data +SELECT * FROM employee; diff --git a/docker-compose/mysql/run.sh b/docker-compose/mysql/run.sh new file mode 100644 index 00000000..98d77b5e --- /dev/null +++ b/docker-compose/mysql/run.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Start services +docker-compose up -d + +# Run API interaction script +chmod +x api-interaction.sh +./api-interaction.sh + +# Optional: Keep services running +docker-compose logs -f diff --git a/docker-compose/oracle/api-interaction.sh b/docker-compose/oracle/api-interaction.sh new file mode 100644 index 00000000..2bda2268 --- /dev/null +++ b/docker-compose/oracle/api-interaction.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Wait for services to be fully up +sleep 15 + +# Base URL for DB2Rest API +BASE_URL="http://localhost/emp/employee" + +# Insert an employee +echo "Inserting employee..." +curl -X POST $BASE_URL \ + -H "Content-Type: application/json" \ + -d '{"name":"Jane Smith"}' + +# Query all employees +echo -e "\nQuerying all employees..." +curl -X GET $BASE_URL diff --git a/docker-compose/oracle/docker-compose.yml b/docker-compose/oracle/docker-compose.yml new file mode 100644 index 00000000..085cb12c --- /dev/null +++ b/docker-compose/oracle/docker-compose.yml @@ -0,0 +1,39 @@ +version: "3.8" +services: + db2rest-service: + image: kdhrubo/db2rest:latest + ports: + - 80:8080 + environment: + DB_URL: "jdbc:oracle:thin:@employee-oracle:1521/XE" + DB_USER: "system" + DB_PASSWORD: "oracle" + INCLUDED_SCHEMAS: system + depends_on: + - employee-oracle + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"] + interval: 30s + timeout: 10s + retries: 3 + + employee-oracle: + image: "gvenzl/oracle-xe:latest" + container_name: "employee-oracle" + ports: + - 1521:1521 + environment: + - ORACLE_PASSWORD=oracle + - APP_USER=system + - APP_USER_PASSWORD=oracle + volumes: + - oracle-data:/opt/oracle/oradata + - ./init:/container-entrypoint-initdb.d + healthcheck: + test: ["CMD", "/bin/bash", "-c", "echo 'SELECT 1 FROM DUAL;' | sqlplus -s system/oracle@localhost/XE"] + interval: 20s + timeout: 10s + retries: 5 + +volumes: + oracle-data: diff --git a/docker-compose/oracle/init/01-init.sql b/docker-compose/oracle/init/01-init.sql new file mode 100644 index 00000000..a56453d8 --- /dev/null +++ b/docker-compose/oracle/init/01-init.sql @@ -0,0 +1,11 @@ +-- Create employee table +CREATE TABLE employee ( + id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name VARCHAR2(100) NOT NULL +); + +-- Insert sample employee +INSERT INTO employee (name) VALUES ('John Doe'); + +-- Query to verify data +SELECT * FROM employee; diff --git a/docker-compose/oracle/run.sh b/docker-compose/oracle/run.sh new file mode 100644 index 00000000..98d77b5e --- /dev/null +++ b/docker-compose/oracle/run.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Start services +docker-compose up -d + +# Run API interaction script +chmod +x api-interaction.sh +./api-interaction.sh + +# Optional: Keep services running +docker-compose logs -f diff --git a/docker-compose/postgresql/api-interaction.sh b/docker-compose/postgresql/api-interaction.sh new file mode 100644 index 00000000..2bda2268 --- /dev/null +++ b/docker-compose/postgresql/api-interaction.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Wait for services to be fully up +sleep 15 + +# Base URL for DB2Rest API +BASE_URL="http://localhost/emp/employee" + +# Insert an employee +echo "Inserting employee..." +curl -X POST $BASE_URL \ + -H "Content-Type: application/json" \ + -d '{"name":"Jane Smith"}' + +# Query all employees +echo -e "\nQuerying all employees..." +curl -X GET $BASE_URL diff --git a/docker-compose/postgresql/docker-compose.yml b/docker-compose/postgresql/docker-compose.yml index 5cc4a278..2a68b587 100644 --- a/docker-compose/postgresql/docker-compose.yml +++ b/docker-compose/postgresql/docker-compose.yml @@ -9,6 +9,13 @@ services: DB_USER: "db2rest" DB_PASSWORD: "db2rest" INCLUDED_SCHEMAS: public,emp + depends_on: + - employee-postgres + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"] + interval: 30s + timeout: 10s + retries: 3 employee-postgres: image: "postgres:14.4" @@ -19,3 +26,14 @@ services: - POSTGRES_USER=db2rest - POSTGRES_PASSWORD=db2rest - POSTGRES_DB=empdb + volumes: + - postgres-data:/var/lib/postgresql/data + - ./init:/docker-entrypoint-initdb.d + healthcheck: + test: ["CMD-SHELL", "pg_isready -U db2rest"] + interval: 20s + timeout: 10s + retries: 5 + +volumes: + postgres-data: diff --git a/docker-compose/postgresql/init/01-init.sql b/docker-compose/postgresql/init/01-init.sql new file mode 100644 index 00000000..4db26a43 --- /dev/null +++ b/docker-compose/postgresql/init/01-init.sql @@ -0,0 +1,11 @@ +-- Create employee table +CREATE TABLE employee ( + id SERIAL PRIMARY KEY, + name VARCHAR(100) NOT NULL +); + +-- Insert sample employee +INSERT INTO employee (name) VALUES ('John Doe'); + +-- Query to verify data +SELECT * FROM employee; diff --git a/docker-compose/postgresql/run.sh b/docker-compose/postgresql/run.sh new file mode 100644 index 00000000..98d77b5e --- /dev/null +++ b/docker-compose/postgresql/run.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Start services +docker-compose up -d + +# Run API interaction script +chmod +x api-interaction.sh +./api-interaction.sh + +# Optional: Keep services running +docker-compose logs -f diff --git a/docker-compose/sqlserver/api-interaction.sh b/docker-compose/sqlserver/api-interaction.sh new file mode 100644 index 00000000..2bda2268 --- /dev/null +++ b/docker-compose/sqlserver/api-interaction.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Wait for services to be fully up +sleep 15 + +# Base URL for DB2Rest API +BASE_URL="http://localhost/emp/employee" + +# Insert an employee +echo "Inserting employee..." +curl -X POST $BASE_URL \ + -H "Content-Type: application/json" \ + -d '{"name":"Jane Smith"}' + +# Query all employees +echo -e "\nQuerying all employees..." +curl -X GET $BASE_URL diff --git a/docker-compose/sqlserver/docker-compose.yml b/docker-compose/sqlserver/docker-compose.yml new file mode 100644 index 00000000..4925a96f --- /dev/null +++ b/docker-compose/sqlserver/docker-compose.yml @@ -0,0 +1,38 @@ +version: "3.8" +services: + db2rest-service: + image: kdhrubo/db2rest:latest + ports: + - 80:8080 + environment: + DB_URL: "jdbc:sqlserver://employee-sqlserver:1433;databaseName=empdb" + DB_USER: "sa" + DB_PASSWORD: "Strong@Password123" + INCLUDED_SCHEMAS: dbo + depends_on: + - employee-sqlserver + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"] + interval: 30s + timeout: 10s + retries: 3 + + employee-sqlserver: + image: "mcr.microsoft.com/mssql/server:2019-latest" + container_name: "employee-sqlserver" + ports: + - 1433:1433 + environment: + - SA_PASSWORD=Strong@Password123 + - ACCEPT_EULA=Y + volumes: + - sqlserver-data:/var/opt/mssql + - ./init:/docker-entrypoint-initdb.d + healthcheck: + test: ["CMD-SHELL", "/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Strong@Password123 -Q 'SELECT 1'"] + interval: 20s + timeout: 10s + retries: 5 + +volumes: + sqlserver-data: diff --git a/docker-compose/sqlserver/init/01-init.sql b/docker-compose/sqlserver/init/01-init.sql new file mode 100644 index 00000000..c8a9da34 --- /dev/null +++ b/docker-compose/sqlserver/init/01-init.sql @@ -0,0 +1,11 @@ +-- Create employee table +CREATE TABLE employee ( + id INT IDENTITY(1,1) PRIMARY KEY, + name NVARCHAR(100) NOT NULL +); + +-- Insert sample employee +INSERT INTO employee (name) VALUES ('John Doe'); + +-- Query to verify data +SELECT * FROM employee; diff --git a/docker-compose/sqlserver/run.sh b/docker-compose/sqlserver/run.sh new file mode 100644 index 00000000..98d77b5e --- /dev/null +++ b/docker-compose/sqlserver/run.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Start services +docker-compose up -d + +# Run API interaction script +chmod +x api-interaction.sh +./api-interaction.sh + +# Optional: Keep services running +docker-compose logs -f diff --git a/pom.xml b/pom.xml index 79695716..6b99facc 100644 --- a/pom.xml +++ b/pom.xml @@ -162,6 +162,27 @@ 2.3.2 + + + org.apache.calcite + calcite-core + 1.32.0 + + + + + mysql + mysql-connector-java + 8.0.27 + + + + + org.postgresql + postgresql + 42.3.1 + +