[libgda] Initial Oracle test docker image



commit e41d33678aae13a77d6d68a16aec5ffc51912411
Author: Vivien Malerba <malerba gnome-db org>
Date:   Sat Sep 19 15:24:57 2015 +0200

    Initial Oracle test docker image

 docker-tools/docker-tools.sh                       |   15 +++++-
 docker-tools/oracle-test-server/Dockerfile         |   13 ++++
 docker-tools/oracle-test-server/README             |   33 +++++++++++
 docker-tools/oracle-test-server/build.sh           |   26 +++++++++
 .../oracle-test-server/setup-data/.gitignore       |    2 +
 .../oracle-test-server/setup-data/chkconfig        |   17 ++++++
 .../oracle-test-server/setup-data/init.ora         |   59 ++++++++++++++++++++
 .../oracle-test-server/setup-data/initXETemp.ora   |   56 +++++++++++++++++++
 .../oracle-test-server/setup-data/setup.sql        |    7 ++
 .../oracle-test-server/setup-scripts/install.sh    |   34 +++++++++++
 .../oracle-test-server/setup-scripts/run.sh        |   15 +++++
 .../oracle-test-server/setup-scripts/setup.sh      |   26 +++++++++
 docker-tools/oracle-test-server/start.sh           |    3 +
 docker-tools/oracle-test-server/stop.sh            |    2 +
 14 files changed, 307 insertions(+), 1 deletions(-)
---
diff --git a/docker-tools/docker-tools.sh b/docker-tools/docker-tools.sh
index c1a5ead..b0b7c01 100755
--- a/docker-tools/docker-tools.sh
+++ b/docker-tools/docker-tools.sh
@@ -10,6 +10,7 @@ function HELP {
        echo "                (MUST be called from the docker image's specific directory)"
        echo "       start:   starts a docker container for the provider specified as option"
        echo "       stop:    stops the docker container for the provider specified as option"
+       echo "       info:    get information about the container running the provider specified as option"
        echo "       started: tests if the docker container for the provider specified as option is started"
        echo "                returns: 0 is started, and 1 otherwise"
        echo "   ex: $0 start MySQL"
@@ -105,6 +106,9 @@ function get_port_for_provider {
        web)
            echo 80
            ;;
+       oracle)
+           echo 1521
+           ;;
        mingw*)
            echo mingw
            ;;
@@ -142,13 +146,22 @@ case $1 in
            }
        else
            # background
-           echo "Running $provider_name server in the background, on port $port use 'stop.sh' to stop it"
+           echo "Running $provider_name server in the background, listening on port $port use 'stop.sh' to 
stop it"
            $docker_cmd run -d -p $port:$port --name "$container_name" "$image_name" > /dev/null 2>&1 || {
                echo "Failed"
                exit 1
            }
+           ipaddr=`$docker_cmd inspect --format='{{.NetworkSettings.IPAddress}}' "$container_name"`
+           echo "IP address of container is $ipaddr"
        fi
        ;;
+    info)
+       parse_provider_arg $2
+       ensure_image_exists "$image_name"
+       ensure_container_running "$container_name"
+       ipaddr=`$docker_cmd inspect --format='{{.NetworkSettings.IPAddress}}' "$container_name"`
+       echo "IP address of container is $ipaddr"
+       ;;
     stop)
        parse_provider_arg $2
        ensure_container_running "$container_name"
diff --git a/docker-tools/oracle-test-server/Dockerfile b/docker-tools/oracle-test-server/Dockerfile
new file mode 100644
index 0000000..5422d71
--- /dev/null
+++ b/docker-tools/oracle-test-server/Dockerfile
@@ -0,0 +1,13 @@
+FROM ubuntu:14.04
+
+MAINTAINER Vivien Malerba "vmalerba gmail com"
+ENV REFRESHED_AT 2015-09-14
+
+ADD setup-scripts/install.sh setup-scripts/setup.sh setup-scripts/run.sh /
+ADD setup-data /setup-data
+RUN /install.sh
+
+EXPOSE 1521
+EXPOSE 8080
+
+CMD /run.sh
diff --git a/docker-tools/oracle-test-server/README b/docker-tools/oracle-test-server/README
new file mode 100644
index 0000000..bd06516
--- /dev/null
+++ b/docker-tools/oracle-test-server/README
@@ -0,0 +1,33 @@
+Use the scripts contained here to create an Oracle server docker image which can be used
+to test Libgda's Oracle provider.
+
+* ./build.sh builds the docker image (named "libgda-test-oracle"). It creates a database populated with
+  data from the NorthWind database (http://www.geeksengine.com/article/northwind-oracle.html).
+  NB: Oracle XE's DEB file must already have been downloaded before building the container
+* ./start.sh starts a docker container in background
+* ./stop.sh stops a running docker container
+
+
+Parameters:
+-----------
+* created database name: XE
+* created user name/pass: gdauser/gdauser (along with SYS/gdauser and SYSTEM/gdauser)
+* database listener port: 1521
+* HTTP port used for Oracle Application Express: 8080
+  workspace: internal
+  username: ADMIN
+  password: oracle
+
+
+
+Oracle test:
+------------
+If SQLPLUS is installed in the host system:
+$ sqlplus gdauser/gdauser 127 0 0 1/XE
+
+If not, SQLPLUS is part of the Docker Oracle image, you can run it from a new instance:
+$ docker run -ti --rm -e ORAIP=`../docker-tools.sh info Oracle | grep IP | grep -o 
'[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'` libgda-test-oracle /bin/bash
+# rlwrap sqlplus gdauser/gdauser $ORAIP/XE
+
+
+$ gda-sql-6.0 "Oracle://gdauser:gdauser HOST=127 0 0 1;DB_NAME=XE"
\ No newline at end of file
diff --git a/docker-tools/oracle-test-server/build.sh b/docker-tools/oracle-test-server/build.sh
new file mode 100755
index 0000000..3c42e7b
--- /dev/null
+++ b/docker-tools/oracle-test-server/build.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# make sure Oracle XE's package is there
+debfile=setup-data/oracle-xe_11.2.0-1.0_amd64.deb
+if [ ! -e $debfile ]
+then
+       echo "Missing Oracle XE package $debfile, please download it from Oracle."
+       exit 1
+fi
+
+# download Northwind data if necessary
+sqlfile=setup-data/northwind.sql
+if [ ! -e $sqlfile ]
+then
+    echo "Missing $sqlfile, downloading (about 0.7 Mb)..."
+    file="https://people.gnome.org/~vivien/northwind_oracle_01.sql";
+    wget -q $file > /dev/null 2>&1 || {
+        echo "Unable to get $file, check with Libgda's maintainer!"
+        exit 1
+    }
+    mv northwind_oracle_01.sql $sqlfile
+    echo "Download complete"
+fi
+
+# actual build
+exec ../docker-tools.sh build Oracle
diff --git a/docker-tools/oracle-test-server/setup-data/.gitignore 
b/docker-tools/oracle-test-server/setup-data/.gitignore
new file mode 100644
index 0000000..6271dd0
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-data/.gitignore
@@ -0,0 +1,2 @@
+*.sql
+*.deb
\ No newline at end of file
diff --git a/docker-tools/oracle-test-server/setup-data/chkconfig 
b/docker-tools/oracle-test-server/setup-data/chkconfig
new file mode 100755
index 0000000..6a4aca1
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-data/chkconfig
@@ -0,0 +1,17 @@
+#!/bin/bash
+# Oracle 11gR2 XE installer chkconfig hack for Ubuntu
+file=/etc/init.d/oracle-xe
+if [[ ! `tail -n1 $file | grep INIT` ]]
+then
+    echo >> $file
+    echo '### BEGIN INIT INFO' >> $file
+    echo '# Provides: OracleXE' >> $file
+    echo '# Required-Start: $remote_fs $syslog' >> $file
+    echo '# Required-Stop: $remote_fs $syslog' >> $file
+    echo '# Default-Start: 2 3 4 5' >> $file
+    echo '# Default-Stop: 0 1 6' >> $file
+    echo '# Short-Description: Oracle 11g Express Edition' >> $file
+    echo '### END INIT INFO' >> $file
+fi
+
+update-rc.d oracle-xe defaults 80 01
diff --git a/docker-tools/oracle-test-server/setup-data/init.ora 
b/docker-tools/oracle-test-server/setup-data/init.ora
new file mode 100644
index 0000000..efa3efd
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-data/init.ora
@@ -0,0 +1,59 @@
+##############################################################################
+# Copyright (c) 1991, 2011, Oracle and/or its affiliates. All rights reserved.
+##############################################################################
+ 
+###########################################
+# Cursors and Library Cache
+###########################################
+open_cursors=300
+ 
+###########################################
+# Database Identification
+###########################################
+db_name=XE
+ 
+###########################################
+# File Configuration
+###########################################
+control_files=("/u01/app/oracle/oradata/XE/control.dbf")
+DB_RECOVERY_FILE_DEST=/u01/app/oracle/fast_recovery_area
+DB_RECOVERY_FILE_DEST_SIZE=10G
+ 
+###########################################
+# Job Queues
+###########################################
+job_queue_processes=4
+ 
+###########################################
+# Miscellaneous
+###########################################
+compatible=11.2.0.0.0
+diagnostic_dest=/u01/app/oracle
+#memory_target=1073741824
+#memory_target=1073741824
+pga_aggregate_target=200540160
+sga_target=601620480
+ 
+
+###########################################
+# Sessions
+###########################################
+sessions=20
+ 
+###########################################
+# Security and Auditing
+###########################################
+audit_file_dest=/u01/app/oracle/admin/XE/adump
+remote_login_passwordfile=EXCLUSIVE
+ 
+###########################################
+# Shared Server
+###########################################
+dispatchers="(PROTOCOL=TCP) (SERVICE=XEXDB)"
+shared_servers=4
+
+###########################################
+# System Managed Undo and Rollback Segments
+###########################################
+undo_management=AUTO
+undo_tablespace=UNDOTBS1
\ No newline at end of file
diff --git a/docker-tools/oracle-test-server/setup-data/initXETemp.ora 
b/docker-tools/oracle-test-server/setup-data/initXETemp.ora
new file mode 100644
index 0000000..3e89817
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-data/initXETemp.ora
@@ -0,0 +1,56 @@
+##############################################################################
+# Copyright (c) 1991, 2011, Oracle and/or its affiliates. All rights reserved.
+##############################################################################
+ 
+###########################################
+# Cursors and Library Cache
+###########################################
+open_cursors=300
+ 
+###########################################
+# Database Identification
+###########################################
+db_name=XE
+ 
+###########################################
+# File Configuration
+###########################################
+control_files=("/u01/app/oracle/oradata/XE/control.dbf")
+DB_RECOVERY_FILE_DEST_SIZE=10G
+DB_RECOVERY_FILE_DEST=/u01/app/oracle/fast_recovery_area
+ 
+###########################################
+# Job Queues
+###########################################
+ 
+###########################################
+# Miscellaneous
+###########################################
+compatible=11.2.0.0.0
+diagnostic_dest=/u01/app/oracle
+#memory_target=1073741824
+pga_aggregate_target=200540160
+sga_target=601620480
+
+###########################################
+# Sessions
+###########################################
+sessions=20
+ 
+###########################################
+# Security and Auditing
+###########################################
+audit_file_dest=/u01/app/oracle/admin/XE/adump
+remote_login_passwordfile=EXCLUSIVE
+ 
+###########################################
+# Shared Server
+###########################################
+dispatchers="(PROTOCOL=TCP) (SERVICE=XEXDB)"
+ 
+###########################################
+# System Managed Undo and Rollback Segments
+###########################################
+undo_management=AUTO
+undo_tablespace=UNDOTBS1
+_no_recovery_through_resetlogs=true
\ No newline at end of file
diff --git a/docker-tools/oracle-test-server/setup-data/setup.sql 
b/docker-tools/oracle-test-server/setup-data/setup.sql
new file mode 100644
index 0000000..5913e14
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-data/setup.sql
@@ -0,0 +1,7 @@
+create user gdauser identified by gdauser;
+grant CREATE SESSION, ALTER SESSION, CREATE DATABASE LINK, CREATE MATERIALIZED VIEW, CREATE PROCEDURE, 
CREATE PUBLIC SYNONYM, CREATE ROLE, CREATE SEQUENCE, CREATE SYNONYM, CREATE TABLE, CREATE TRIGGER, CREATE 
TYPE, CREATE VIEW, UNLIMITED TABLESPACE to gdauser;
+
+ALTER USER hr ACCOUNT UNLOCK;
+ALTER USER hr IDENTIFIED BY gdauser;
+
+QUIT
diff --git a/docker-tools/oracle-test-server/setup-scripts/install.sh 
b/docker-tools/oracle-test-server/setup-scripts/install.sh
new file mode 100755
index 0000000..737bad3
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-scripts/install.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+version=11.2.0
+debfile=/setup-data/oracle-xe_${version}-1.0_amd64.deb
+
+# avoid dpkg frontend dialog / frontend warnings 
+export DEBIAN_FRONTEND=noninteractive
+
+# Prepare to install Oracle
+apt-get update && apt-get install -y libaio1 net-tools bc rlwrap
+ln -s /usr/bin/awk /bin/awk
+mkdir /var/lock/subsys
+mv /setup-data/chkconfig /sbin/chkconfig
+chmod 755 /sbin/chkconfig
+
+# Install Oracle
+dpkg --install $debfile && rm $debfile
+
+# Backup listener.ora as template
+cp /u01/app/oracle/product/$version/xe/network/admin/listener.ora 
/u01/app/oracle/product/$version/xe/network/admin/listener.ora.tmpl
+
+mv /setup-data/init.ora /u01/app/oracle/product/$version/xe/config/scripts
+mv /setup-data/initXETemp.ora /u01/app/oracle/product/$version/xe/config/scripts
+
+printf 8080\\n1521\\ngdauser\\ngdauser\\ny\\n | /etc/init.d/oracle-xe configure
+
+echo "export ORACLE_HOME=/u01/app/oracle/product/$version/xe" >> /etc/bash.bashrc
+echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /etc/bash.bashrc
+echo "export ORACLE_SID=XE" >> /etc/bash.bashrc
+
+echo "export version=$version" > /setup-data/env.sh
+echo "export ORACLE_HOME=/u01/app/oracle/product/$version/xe" >> /setup-data/env.sh
+echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /setup-data/env.sh
+
+/setup.sh
diff --git a/docker-tools/oracle-test-server/setup-scripts/run.sh 
b/docker-tools/oracle-test-server/setup-scripts/run.sh
new file mode 100755
index 0000000..dd1807a
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-scripts/run.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+LISTENERS_ORA=/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
+
+cp "${LISTENERS_ORA}.tmpl" "$LISTENERS_ORA" && 
+sed -i "s/%hostname%/$HOSTNAME/g" "${LISTENERS_ORA}" && 
+sed -i "s/%port%/1521/g" "${LISTENERS_ORA}" && 
+
+service oracle-xe start
+
+# wait so that the docker script does not exit
+while true
+do
+       sleep 3600
+done
diff --git a/docker-tools/oracle-test-server/setup-scripts/setup.sh 
b/docker-tools/oracle-test-server/setup-scripts/setup.sh
new file mode 100755
index 0000000..4e79c82
--- /dev/null
+++ b/docker-tools/oracle-test-server/setup-scripts/setup.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+. /setup-data/env.sh
+
+# start server to create data
+LISTENERS_ORA=/u01/app/oracle/product/$version/xe/network/admin/listener.ora
+
+cp "${LISTENERS_ORA}.tmpl" "$LISTENERS_ORA" && 
+sed -i "s/%hostname%/$HOSTNAME/g" "${LISTENERS_ORA}" && 
+sed -i "s/%port%/1521/g" "${LISTENERS_ORA}" && 
+
+service oracle-xe start
+
+cd /setup-data
+while :
+do
+    sqlplus -L system/gdauser 127 0 0 1/XE @setup.sql
+    if test $? == 0
+    then
+       sqlplus gdauser/gdauser 127 0 0 1/XE @northwind.sql
+       break;
+    fi
+    sleep 5
+done
+
+service oracle-xe stop
diff --git a/docker-tools/oracle-test-server/start.sh b/docker-tools/oracle-test-server/start.sh
new file mode 100755
index 0000000..afda717
--- /dev/null
+++ b/docker-tools/oracle-test-server/start.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+exec ../docker-tools.sh start Oracle
+
diff --git a/docker-tools/oracle-test-server/stop.sh b/docker-tools/oracle-test-server/stop.sh
new file mode 100755
index 0000000..343bcef
--- /dev/null
+++ b/docker-tools/oracle-test-server/stop.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+exec ../docker-tools.sh stop Oracle


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]