{"id":844,"date":"2017-06-27T15:23:44","date_gmt":"2017-06-27T13:23:44","guid":{"rendered":"http:\/\/eiseler.de\/wordpress\/?p=844"},"modified":"2017-06-27T15:27:29","modified_gmt":"2017-06-27T13:27:29","slug":"a-dockerfile-for-oracle-and-perl","status":"publish","type":"post","link":"https:\/\/eiseler.de\/wordpress\/?p=844","title":{"rendered":"A Dockerfile for Oracle and perl"},"content":{"rendered":"<p>I didn&#8217;f find a dockerfile for oracle and perl. So I did one by myself.<\/p>\n<p>Quick Instructions: Create dir; Create Dockerfile (above); create oracle_test.pl (above), download the oracle files.<\/p>\n<p>Build it:<\/p>\n<pre>docker build -t perl-oracle .<\/pre>\n<p>Run it:<\/p>\n<pre>docker run -it --rm perl-oracle<\/pre>\n<p>I took <a href=\"http:\/\/www.ecliptik.com\/Containerizing-a-Perl-Script\/\">http:\/\/www.ecliptik.com\/Containerizing-a-Perl-Script\/<\/a> as the base and added the information from here: <a href=\"http:\/\/www.aboutmonitoring.com\/install-dbd-oracle-perl-modules-in-linux\">http:\/\/www.aboutmonitoring.com\/install-dbd-oracle-perl-modules-in-linux<\/a>\/ . To get the 3 Oracle files, you need an Oracle Account and download manualy and put it in your directory.<\/p>\n<p>Your directory should look like this is:<\/p>\n<pre>$ ls\r\nDockerfile\r\noracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm\r\noracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm\r\noracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm\r\noracle_test.pl*<\/pre>\n<p>with the Dockerfile:<\/p>\n<pre>FROM ubuntu:14.04\r\nMAINTAINER Micheal Waltz &lt;ecliptik@gmail.com&gt;\r\n# see http:\/\/www.ecliptik.com\/Containerizing-a-Perl-Script\/\r\n\r\n# Dockerfile by Johannes Eiseler 6\/2017\r\n# \r\n# How to build:\r\n# docker build -t perl-oracle .\r\n\r\n# How to run:\r\n# docker run -it --rm perl-oracle\r\n# docker run -v \/c\/Users\/myuser\/directory\/you\/like\/to\/share:\/host\/directory -it --rm perl-oracle\r\n\r\nENV DEBIAN_FRONTEND=noninteractive LANG=en_US.UTF-8 LC_ALL=C.UTF-8 LANGUAGE=en_US.UTF-8\r\n\r\nRUN [ \"apt-get\", \"-q\", \"update\" ]\r\nRUN [ \"apt-get\", \"-qy\", \"--force-yes\", \"upgrade\" ]\r\nRUN [ \"apt-get\", \"-qy\", \"--force-yes\", \"dist-upgrade\" ]\r\nRUN [ \"apt-get\", \"install\", \"-qy\", \"--force-yes\", \\\r\n      \"perl\", \\\r\n      \"build-essential\", \\\r\n      \"cpanminus\" ]\r\nRUN [ \"apt-get\", \"clean\" ]\r\nRUN [ \"rm\", \"-rf\", \"\/var\/lib\/apt\/lists\/*\", \"\/tmp\/*\", \"\/var\/tmp\/*\" ]\r\n\r\n#RUN [\"cpanm\", \"Proc::ProcessTable\", \"Data::Dumper\" ]\r\n\r\nCOPY [ \".\/oracle_test.pl\", \"\/app\/oracle_test.pl\" ]\r\nRUN [ \"chmod\", \"+x\",  \"\/app\/oracle_test.pl\" ]\r\n\r\n# now Oracle\r\n# see http:\/\/www.aboutmonitoring.com\/install-dbd-oracle-perl-modules-in-linux\/\r\n\r\nCOPY [ \".\/*.rpm\", \"\/app\/\" ]\r\n\r\nWORKDIR \/app\r\nRUN [\"apt-get\", \"update\"]\r\nRUN [\"apt-get\", \"install\", \"libaio-dev\", \"libaio1\" ]\r\nRUN [\"apt-get\", \"install\", \"-qy\", \"--force-yes\", \"alien\" ]\r\n\r\nRUN alien --scripts \/app\/oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm\r\nRUN alien --scripts \/app\/oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm\r\nRUN alien --scripts \/app\/oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm\r\n\r\nRUN dpkg -i \/app\/oracle-instantclient12.2-basic_12.2.0.1.0-2_amd64.deb\r\nRUN dpkg -i \/app\/oracle-instantclient12.2-devel_12.2.0.1.0-2_amd64.deb\r\nRUN dpkg -i \/app\/oracle-instantclient12.2-sqlplus_12.2.0.1.0-2_amd64.deb\r\n\r\nENV PATH $PATH:$HOME\/bin:\/usr\/lib\/oracle\/12.2\/client64\/bin\r\nENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:\/usr\/lib\/oracle\/12.2\/client64\/lib\r\nENV ORACLE_HOME \/usr\/lib\/oracle\/12.2\/client64\/lib\r\nENV TNS_ADMIN $ORACLE_HOME\/network\/admin\r\n\r\n# now perl oracle\r\nRUN [\"apt-get\", \"install\", \"-qy\", \"--force-yes\", \"libdbi-perl\" ]\r\nRUN [\"cpan\", \"DBD::Oracle\"]\r\n\r\n# if you wan't to use it interactivly comment the next line\r\nENTRYPOINT [ \"\/app\/oracle_test.pl\" ]\r\n<\/pre>\n<p>And the perl script oracle_test.pl:<\/p>\n<pre>#!\/usr\/bin\/perl\r\n\r\nuse strict;\r\nuse DBI;\r\n\r\n#Take Env Variable\r\nmy $workdir = $ENV{'MYWORKINGDIR'};  #Takes the variables\r\n\r\nprint \"Hello World\\n\";\r\n\r\n#database\r\n\r\nmy $db = DBI-&gt;connect(\"dbi:Oracle:host=your.database.host;sid=yoursid;port=yourport\",\"youruser\/yourpassword\", \"\") || die( $DBI::errstr . \"\\n\" );\r\n\r\n$db-&gt;{AutoCommit}    = 0;\r\n$db-&gt;{RaiseError}    = 1;\r\n$db-&gt;{ora_check_sql} = 0;\r\n$db-&gt;{RowCacheSize}  = 16;\r\n\r\nmy $SEL = \"SELECT * FROM dual\";\r\nmy $sth = $db-&gt;prepare($SEL);\r\n$sth-&gt;execute();\r\n \r\nwhile ( my @row = $sth-&gt;fetchrow_array() ) {\r\n    foreach (@row) {\r\n        $_ = \"\\t\" if !defined($_);\r\n        print \"$_\\t\";\r\n    }\r\n    print \"\\n\";\r\n}\r\n \r\nEND {\r\n    $db-&gt;disconnect if defined($db);\r\n}\r\n\r\n\r\nprint \"----- End of perl file ------\\n\"\r\n\r\n<\/pre>\n<p>Keywords: Dockerfile, Oracle, Perl, Running perl script connect to oracle<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-844\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=facebook\" target=\"_blank\" title=\"Click to share on Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-844\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\"><span>Twitter<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-844\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-pocket\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-pocket sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=pocket\" target=\"_blank\" title=\"Click to share on Pocket\"><span>Pocket<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>I didn&#8217;f find a dockerfile for oracle and perl. So I did one by myself. Quick Instructions: Create dir; Create Dockerfile (above); create oracle_test.pl (above), download the oracle files. Build it: docker build -t perl-oracle . Run it: docker run &hellip; <a href=\"https:\/\/eiseler.de\/wordpress\/?p=844\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-844\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=facebook\" target=\"_blank\" title=\"Click to share on Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-844\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\"><span>Twitter<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-844\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-pocket\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-pocket sd-button share-icon\" href=\"https:\/\/eiseler.de\/wordpress\/?p=844&amp;share=pocket\" target=\"_blank\" title=\"Click to share on Pocket\"><span>Pocket<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[44,27,36],"tags":[],"class_list":["post-844","post","type-post","status-publish","format-standard","hentry","category-docker","category-perl","category-tipps-tricks"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8zAuQ-dC","jetpack-related-posts":[{"id":841,"url":"https:\/\/eiseler.de\/wordpress\/?p=841","url_meta":{"origin":844,"position":0},"title":"How to use Docker for sqlplus on an Oracle Database","date":"27\/06\/2017","format":false,"excerpt":"You need a docker installation and a user\/password at store.docker.com. If you got this you can establish a sqlplus session with this docker command: docker run -ti --rm store\/oracle\/database-instantclient:12.2.0.1 sqlplus \"user\/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=your.host.site)(Port=yourport))(CONNECT_DATA=(SID=yoursid)))\" Keywords: docker, oracle, sqlplus, easy","rel":"","context":"In &quot;Docker&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":497,"url":"https:\/\/eiseler.de\/wordpress\/?p=497","url_meta":{"origin":844,"position":1},"title":"Perl: Array of Arrays, when do I need to cast","date":"28\/01\/2014","format":false,"excerpt":"Cave of Programming gave me the hint how to cast: \"We can use this reference with push, pop, grep and so on if we first cast the reference to an actual array. To cast a reference to an array in Perl, surround the reference with {} brackets and prefix it\u2026","rel":"","context":"In &quot;Perl&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":479,"url":"https:\/\/eiseler.de\/wordpress\/?p=479","url_meta":{"origin":844,"position":2},"title":"Raspberry Pi mit Internetradio und Airplay","date":"30\/11\/2013","format":false,"excerpt":"Hier der einige Tipps zum Aufbau eines Raspberry Pis ohns Monitor, Tastatur und Maus mit den F\u00e4higkeiten remote eine Oberfl\u00e4che bereit zu stellen, Internetradio wieder zu geben und als Airplay Station zu dienen. Achso und nebneher noch einen Webserver (LAMP) laufen lassen. Was braucht man? Raspberry Pi, Stromversorgung dazu, WLAN-Stick,\u2026","rel":"","context":"In &quot;iOS App&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":503,"url":"https:\/\/eiseler.de\/wordpress\/?p=503","url_meta":{"origin":844,"position":3},"title":"G\u00fcnstig Temperatur, Luftfeuchte und Energie messen mit Raspberry Pi oder PC","date":"19\/03\/2014","format":false,"excerpt":"Drahtloses Anbinden von Temperatursensoren und Energiemesser. Und das noch g\u00fcnstig. Sehr hilfreich war dieser Beitrag. Er beschreibt die Anbindung von drahtlosen Sensoren an Fhem. Fhem wollte ich jetzt (noch) nicht aufsetzen, deshalb realisierte ich meine eigene Anbindung in der die Temperaturkurven auf dem Webserver des Raspi angezeigt werden. Zutaten: Ein\u2026","rel":"","context":"In &quot;Arduino&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/eiseler.de\/wordpress\/wp-content\/uploads\/2020\/08\/Bildschirmfoto-2020-08-18-um-03.09.47.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1333,"url":"https:\/\/eiseler.de\/wordpress\/?p=1333","url_meta":{"origin":844,"position":4},"title":"ioBroker with docker, docker-compose, Homematic, grafana some hints","date":"02\/11\/2020","format":false,"excerpt":"some hints which helped me: docker-compose.yml, some ports version: '2' services: iobroker: restart: always image: buanet\/iobroker:latest container_name: iobroker hostname: iobroker ports: - \"8081:8081\" - \"1880:1880\" #node-red - \"1883:1883\" #mqtt - \"2001:2001\" #homematic - \"2010:2010\" #homematic - \"8082:8082\" #iobroker admin - \"8282:8282\" #flot - \"8088:8088\" #terminal - \"8284:8284\" #socketIO - \"33980:33980\"\u2026","rel":"","context":"Similar post","img":{"alt_text":"","src":"https:\/\/i1.wp.com\/eiseler.de\/wordpress\/wp-content\/uploads\/2020\/11\/image.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1011,"url":"https:\/\/eiseler.de\/wordpress\/?p=1011","url_meta":{"origin":844,"position":5},"title":"Docker: VM won't start, driver reinstalled","date":"18\/07\/2018","format":false,"excerpt":"Had the problem, that the VM didn't start. (After reinstalling). NtCreateFile(\\Device\\VBoxDrvStub) failed: 0xc0000034 STATUS_OBJECT_NAME_NOT_FOUND Solved by reinstalling C:\\Program Files\\Oracle\\VirtualBox\\drivers\\vboxdrv\\VBoxDrv.inf (right click, install). And reboot afterwards. \u00a0 \u00a0","rel":"","context":"In &quot;Docker&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/844","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=844"}],"version-history":[{"count":3,"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/844\/revisions"}],"predecessor-version":[{"id":847,"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/844\/revisions\/847"}],"wp:attachment":[{"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=844"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=844"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eiseler.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=844"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}