├── log └── .gitkeep ├── vendor ├── 19.28 │ └── .gitkeep ├── 21.19 │ └── .gitkeep └── 23.9 │ └── .gitkeep ├── ruby-versions ├── .gitignore ├── pull.sh ├── hooks └── post_push ├── pull-existing.sh ├── update.sh ├── push.sh ├── document.sh ├── Dockerfile-3.2-23.9-basic ├── Dockerfile-3.3-23.9-basic ├── Dockerfile-3.4-23.9-basic ├── Dockerfile-3.2-19.28-basic ├── Dockerfile-3.2-21.19-basic ├── Dockerfile-3.2-23.9-basiclite ├── Dockerfile-3.3-19.28-basic ├── Dockerfile-3.3-21.19-basic ├── Dockerfile-3.3-23.9-basiclite ├── Dockerfile-3.4-19.28-basic ├── Dockerfile-3.4-21.19-basic ├── Dockerfile-3.4-23.9-basiclite ├── README.md ├── Dockerfile-3.2-19.28-basiclite ├── Dockerfile-3.2-21.19-basiclite ├── Dockerfile-3.3-19.28-basiclite ├── Dockerfile-3.3-21.19-basiclite ├── Dockerfile-3.4-19.28-basiclite ├── Dockerfile-3.4-21.19-basiclite └── Dockerfile.template /log/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/19.28/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/21.19/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/23.9/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ruby-versions: -------------------------------------------------------------------------------- 1 | 3.2 2 | 3.3 3 | 3.4 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | log/*.log 2 | vendor/*/*.rpm 3 | -------------------------------------------------------------------------------- /pull.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | while read ruby_version; do 4 | docker pull "ruby:${ruby_version}-slim" 5 | done < ruby-versions 6 | -------------------------------------------------------------------------------- /hooks/post_push: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [[ $IMAGE_NAME == *"-basiclite" ]]; then 5 | NEW_IMAGE_NAME=${IMAGE_NAME%-*} 6 | docker tag $IMAGE_NAME $NEW_IMAGE_NAME 7 | docker push $NEW_IMAGE_NAME 8 | fi 9 | 10 | -------------------------------------------------------------------------------- /pull-existing.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | oracle_versions=( vendor/* ) 4 | tag_prefix="tobiashm/ruby-instantclient" 5 | while read -r ruby_version; do 6 | for oracle_version in "${oracle_versions[@]#vendor/}"; do 7 | version="$ruby_version-$oracle_version" 8 | for variant in basic basiclite; do 9 | docker pull "$tag_prefix:$version-$variant" 10 | done 11 | done 12 | done < ruby-versions 13 | -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | oracle_versions=( vendor/* ) 4 | while read ruby_version; do 5 | for oracle_version in "${oracle_versions[@]#vendor/}"; do 6 | for package in basic basiclite; do 7 | sedStr=" 8 | s!%%ORACLE_VERSION%%!$oracle_version!g; 9 | s!%%PACKAGE%%!$package!g 10 | s!%%RUBY_VERSION%%!$ruby_version!g; 11 | " 12 | sed -e "$sedStr" "Dockerfile.template" > "Dockerfile-$ruby_version-$oracle_version-$package" 13 | done 14 | done 15 | done < ruby-versions 16 | -------------------------------------------------------------------------------- /push.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | oracle_versions=( vendor/* ) 4 | tag_prefix="tobiashm/ruby-instantclient" 5 | while read -r ruby_version; do 6 | actual_ruby_version=$(docker run --rm "ruby:$ruby_version-slim" ruby -e "puts RUBY_VERSION") 7 | for oracle_version in "${oracle_versions[@]#vendor/}"; do 8 | docker push "$tag_prefix:$ruby_version-$oracle_version" 9 | for variant in basic basiclite; do 10 | docker push "$tag_prefix:$ruby_version-$oracle_version-$variant" 11 | docker push "$tag_prefix:$actual_ruby_version-$oracle_version-$variant" 12 | done 13 | done 14 | done < ruby-versions 15 | -------------------------------------------------------------------------------- /document.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | oracle_versions=( vendor/* ) 4 | while read -r ruby_version; do 5 | echo "## Ruby $ruby_version" 6 | actual_ruby_version=$(docker run --rm "ruby:$ruby_version-slim" ruby -e "puts RUBY_VERSION") 7 | for oracle_version in "${oracle_versions[@]#vendor/}"; do 8 | echo -n "- " 9 | echo -n "\`$actual_ruby_version-$oracle_version-basiclite\`" 10 | echo -n ", \`$ruby_version-$oracle_version-basiclite\`" 11 | echo -n ", \`$ruby_version-$oracle_version\`" 12 | echo "" 13 | echo -n "- " 14 | echo -n "\`$actual_ruby_version-$oracle_version-basic\`" 15 | echo -n ", \`$ruby_version-$oracle_version-basic\`" 16 | echo "" 17 | done 18 | echo "" 19 | done < ruby-versions 20 | -------------------------------------------------------------------------------- /Dockerfile-3.2-23.9-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.2-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/23.9/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/23.9/oracle-instantclient*-basic-*.rpm \ 12 | vendor/23.9/oracle-instantclient*-devel-*.rpm \ 13 | vendor/23.9/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/23.9/client64/lib > /etc/ld.so.conf.d/oracle-instantclient23.9.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.3-23.9-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.3-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/23.9/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/23.9/oracle-instantclient*-basic-*.rpm \ 12 | vendor/23.9/oracle-instantclient*-devel-*.rpm \ 13 | vendor/23.9/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/23.9/client64/lib > /etc/ld.so.conf.d/oracle-instantclient23.9.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.4-23.9-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.4-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/23.9/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/23.9/oracle-instantclient*-basic-*.rpm \ 12 | vendor/23.9/oracle-instantclient*-devel-*.rpm \ 13 | vendor/23.9/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/23.9/client64/lib > /etc/ld.so.conf.d/oracle-instantclient23.9.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.2-19.28-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.2-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/19.28/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/19.28/oracle-instantclient*-basic-*.rpm \ 12 | vendor/19.28/oracle-instantclient*-devel-*.rpm \ 13 | vendor/19.28/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/19.28/client64/lib > /etc/ld.so.conf.d/oracle-instantclient19.28.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.2-21.19-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.2-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/21.19/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/21.19/oracle-instantclient*-basic-*.rpm \ 12 | vendor/21.19/oracle-instantclient*-devel-*.rpm \ 13 | vendor/21.19/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/21.19/client64/lib > /etc/ld.so.conf.d/oracle-instantclient21.19.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.2-23.9-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.2-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/23.9/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/23.9/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/23.9/oracle-instantclient*-devel-*.rpm \ 13 | vendor/23.9/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/23.9/client64/lib > /etc/ld.so.conf.d/oracle-instantclient23.9.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.3-19.28-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.3-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/19.28/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/19.28/oracle-instantclient*-basic-*.rpm \ 12 | vendor/19.28/oracle-instantclient*-devel-*.rpm \ 13 | vendor/19.28/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/19.28/client64/lib > /etc/ld.so.conf.d/oracle-instantclient19.28.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.3-21.19-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.3-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/21.19/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/21.19/oracle-instantclient*-basic-*.rpm \ 12 | vendor/21.19/oracle-instantclient*-devel-*.rpm \ 13 | vendor/21.19/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/21.19/client64/lib > /etc/ld.so.conf.d/oracle-instantclient21.19.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.3-23.9-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.3-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/23.9/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/23.9/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/23.9/oracle-instantclient*-devel-*.rpm \ 13 | vendor/23.9/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/23.9/client64/lib > /etc/ld.so.conf.d/oracle-instantclient23.9.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.4-19.28-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.4-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/19.28/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/19.28/oracle-instantclient*-basic-*.rpm \ 12 | vendor/19.28/oracle-instantclient*-devel-*.rpm \ 13 | vendor/19.28/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/19.28/client64/lib > /etc/ld.so.conf.d/oracle-instantclient19.28.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.4-21.19-basic: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.4-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/21.19/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/21.19/oracle-instantclient*-basic-*.rpm \ 12 | vendor/21.19/oracle-instantclient*-devel-*.rpm \ 13 | vendor/21.19/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/21.19/client64/lib > /etc/ld.so.conf.d/oracle-instantclient21.19.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.4-23.9-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.4-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/23.9/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/23.9/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/23.9/oracle-instantclient*-devel-*.rpm \ 13 | vendor/23.9/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/23.9/client64/lib > /etc/ld.so.conf.d/oracle-instantclient23.9.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Docker image for Ruby with Oracle Instant Client 2 | 3 | Based on the official `ruby:slim` images. 4 | 5 | Why not the `ruby:alpine` images? The Instant Client libraries are build against 6 | `glibc` and uses some of the features that are not implemented in `musl libc`, 7 | which is what Alpine linux uses. 8 | 9 | ## Oracle Instant Client 10 | 11 | The Oracle Technology Network License Agreement does not allow for 12 | redistribution of the `.rpm` packages for Oracle Instant Client. 13 | 14 | So to build the Docker images, download the following packages from 15 | [Oracle Technology Network][]: 16 | 17 | - Instant Client Package - Basic and Basic Lite 18 | - Instant Client Package - SDK 19 | - Instant Client Package - SQL*Plus 20 | 21 | And place the `.rpm` files for each version in the respective folders. 22 | 23 | [Oracle Technology Network]: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 24 | -------------------------------------------------------------------------------- /Dockerfile-3.2-19.28-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.2-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/19.28/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/19.28/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/19.28/oracle-instantclient*-devel-*.rpm \ 13 | vendor/19.28/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/19.28/client64/lib > /etc/ld.so.conf.d/oracle-instantclient19.28.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.2-21.19-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.2-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/21.19/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/21.19/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/21.19/oracle-instantclient*-devel-*.rpm \ 13 | vendor/21.19/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/21.19/client64/lib > /etc/ld.so.conf.d/oracle-instantclient21.19.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.3-19.28-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.3-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/19.28/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/19.28/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/19.28/oracle-instantclient*-devel-*.rpm \ 13 | vendor/19.28/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/19.28/client64/lib > /etc/ld.so.conf.d/oracle-instantclient19.28.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.3-21.19-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.3-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/21.19/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/21.19/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/21.19/oracle-instantclient*-devel-*.rpm \ 13 | vendor/21.19/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/21.19/client64/lib > /etc/ld.so.conf.d/oracle-instantclient21.19.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.4-19.28-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.4-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/19.28/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/19.28/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/19.28/oracle-instantclient*-devel-*.rpm \ 13 | vendor/19.28/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/19.28/client64/lib > /etc/ld.so.conf.d/oracle-instantclient19.28.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile-3.4-21.19-basiclite: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:3.4-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/21.19/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/21.19/oracle-instantclient*-basiclite-*.rpm \ 12 | vendor/21.19/oracle-instantclient*-devel-*.rpm \ 13 | vendor/21.19/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/21.19/client64/lib > /etc/ld.so.conf.d/oracle-instantclient21.19.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | -------------------------------------------------------------------------------- /Dockerfile.template: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | 3 | FROM ruby:%%RUBY_VERSION%%-slim 4 | LABEL maintainer="tobias.michaelsen@gmail.com" 5 | 6 | ENV ORACLE_HOME="/usr/lib/oracle/%%ORACLE_VERSION%%/client64" 7 | ENV LD_LIBRARY_PATH="$ORACLE_HOME/lib" 8 | ENV PATH="$PATH:$ORACLE_HOME/bin" 9 | 10 | COPY \ 11 | vendor/%%ORACLE_VERSION%%/oracle-instantclient*-%%PACKAGE%%-*.rpm \ 12 | vendor/%%ORACLE_VERSION%%/oracle-instantclient*-devel-*.rpm \ 13 | vendor/%%ORACLE_VERSION%%/oracle-instantclient*-sqlplus-*.rpm \ 14 | /tmp/ 15 | 16 | RUN set -ex && \ 17 | BUILD_PACKAGES='alien build-essential libaio-dev' && \ 18 | apt-get update && \ 19 | apt-get install -y --no-install-recommends $BUILD_PACKAGES libaio1t64 && \ 20 | for f in /tmp/oracle-*.rpm; do alien -i $f; done && \ 21 | apt-get purge -y --auto-remove $BUILD_PACKAGES && \ 22 | rm -rf /tmp/*.rpm && \ 23 | echo /usr/lib/oracle/%%ORACLE_VERSION%%/client64/lib > /etc/ld.so.conf.d/oracle-instantclient%%ORACLE_VERSION%%.conf && \ 24 | ldconfig 25 | 26 | CMD ["sh"] 27 | --------------------------------------------------------------------------------