From c4758b49e226431e2a9aa30319277dda132298a1 Mon Sep 17 00:00:00 2001 From: OhMyFelix Date: Wed, 18 Feb 2026 15:19:39 +0000 Subject: [PATCH 1/5] Oracle: add oracle-19 image variant --- .github/workflows/docker.yml | 5 +++ Makefile | 6 ++-- README.md | 3 +- adminer-oracle-19/Dockerfile | 58 +++++++++++++++++++++++++++++++++ adminer-oracle-19/entrypoint.sh | 38 +++++++++++++++++++++ 5 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 adminer-oracle-19/Dockerfile create mode 100755 adminer-oracle-19/entrypoint.sh diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6ab86f1..04b8e11 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -51,6 +51,11 @@ jobs: tag: oracle-12 platforms: linux/amd64 + - dockerfile: ./adminer-oracle-19/Dockerfile + context: ./adminer-oracle-19 + tag: oracle-19 + platforms: linux/amd64 + - dockerfile: ./adminer-postgres/Dockerfile context: ./adminer-postgres tag: postgres diff --git a/Makefile b/Makefile index 223ed42..ef2f347 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ DOCKER_IMAGE=dockette/adminer DOCKER_PLATFORMS?=linux/amd64 -build-all: build-full build-dg build-editor build-mongo build-mysql build-postgres build-oracle-11 build-oracle-12 +build-all: build-full build-dg build-editor build-mongo build-mysql build-postgres build-oracle-11 build-oracle-12 build-oracle-19 _docker-build-%: TAG=$* _docker-build-%: @@ -15,6 +15,7 @@ build-mysql: _docker-build-mysql build-postgres: _docker-build-postgres build-oracle-11: _docker-build-oracle-11 build-oracle-12: _docker-build-oracle-12 +build-oracle-19: _docker-build-oracle-19 _docker-test-%: TAG=$* _docker-test-%: @@ -28,8 +29,9 @@ test-mysql: _docker-test-mysql test-postgres: _docker-test-postgres test-oracle-11: _docker-test-oracle-11 test-oracle-12: _docker-test-oracle-12 +test-oracle-19: _docker-test-oracle-19 -test-all: test-full test-dg test-editor test-mongo test-mysql test-postgres test-oracle-11 test-oracle-12 +test-all: test-full test-dg test-editor test-mongo test-mysql test-postgres test-oracle-11 test-oracle-12 test-oracle-19 update-versions: find . -type f -name Dockerfile -exec sed -i '' 's/ENV ADMINER_VERSION=.*/ENV ADMINER_VERSION=${ADMINER_VERSION}/g' {} + diff --git a/README.md b/README.md index acd8c68..390ab7e 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,13 @@ There are few variants of this adminer image based: - mysql (only) - pgsql (only) - mongo (only) +- oracle-11 / oracle-12 / oracle-19 (only) - dg (custom) **Features** - Alpine Linux (full, editor, df, mongo, mysql, postgres) -- Debian Buster (oracle-11, oracle-12) +- Debian Buster (oracle-11, oracle-12, oracle-19) - PHP 8 (concurrency via PHP cli workers) ## Usage diff --git a/adminer-oracle-19/Dockerfile b/adminer-oracle-19/Dockerfile new file mode 100644 index 0000000..d5bb72a --- /dev/null +++ b/adminer-oracle-19/Dockerfile @@ -0,0 +1,58 @@ +FROM dockette/debian:bookworm-slim + +LABEL maintainer="Milan Sulc " + +ENV ADMINER_VERSION=5.4.2 +ENV MEMORY=256M +ENV UPLOAD=2048M +ENV PORT=80 +ENV LD_LIBRARY_PATH="/usr/local/lib;/usr/local/instantclient" +ENV WORKERS=8 +ENV PHP_CLI_SERVER_WORKERS=${WORKERS} + +# DEPENDENCIES ################################################################# +RUN apt-get update && \ + apt-get dist-upgrade -y && \ + apt install -y apt-transport-https lsb-release ca-certificates curl wget && \ + wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ + sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' && \ + apt-get update && \ + apt-get install -y \ + make \ + autoconf \ + g++ \ + unzip \ + libaio1 \ + ca-certificates \ + php8.4 \ + php8.4-dev \ + php8.4-xml \ + php-pear \ + tini && \ + wget https://github.com/vrana/adminer/releases/download/v$ADMINER_VERSION/adminer-$ADMINER_VERSION.php -O /srv/index.php + +# OCI8 (ORACLE) ################################################################ +RUN wget https://github.com/f00b4r/oracle-instantclient/raw/master/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip -O /tmp/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip && \ + wget https://github.com/f00b4r/oracle-instantclient/raw/master/instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip -O /tmp/instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip && \ + unzip /tmp/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip -d /usr/local/ && \ + unzip /tmp/instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip -d /usr/local/ && \ + ln -s /usr/local/instantclient_19_6 /usr/local/instantclient && \ + ln -s /usr/local/instantclient/libclntsh.so.19.1 /usr/local/instantclient/libclntsh.so && \ + echo 'instantclient,/usr/local/instantclient' | pecl install oci8 && \ + echo "extension=oci8.so" > /etc/php/8.4/cli/conf.d/00-oci8.ini + +# CLEAN UP ##################################################################### +RUN apt-get clean -y && \ + apt-get autoclean -y && \ + apt-get remove -y wget && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* /var/lib/log/* /tmp/* /var/tmp/* + +ADD ./entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +WORKDIR /srv +EXPOSE 80 + +ENTRYPOINT ["tini", "--"] +CMD ["/entrypoint.sh"] diff --git a/adminer-oracle-19/entrypoint.sh b/adminer-oracle-19/entrypoint.sh new file mode 100755 index 0000000..32f5d96 --- /dev/null +++ b/adminer-oracle-19/entrypoint.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -Eeo pipefail + +if [ "${ADMINER_DEBUG}" = "1" ]; then + set -o xtrace +fi + +# Banner +if [ "${ADMINER_BANNER}" != "0" ] && [ "${ADMINER_BANNER}" != "false" ] && [ "${ADMINER_BANNER}" != "no" ] && [ "${ADMINER_BANNER}" != "off" ]; then + cat << 'EOF' + █████╗ ██████╗ ███╗ ███╗██╗███╗ ██╗███████╗██████╗ +██╔══██╗██╔══██╗████╗ ████║██║████╗ ██║██╔════╝██╔══██╗ +███████║██║ ██║██╔████╔██║██║██╔██╗ ██║█████╗ ██████╔╝ +██╔══██║██║ ██║██║╚██╔╝██║██║██║╚██╗██║██╔══╝ ██╔══██╗ +██║ ██║██████╔╝██║ ╚═╝ ██║██║██║ ╚████║███████╗██║ ██║ +╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ +EOF +fi + +echo "[adminer] Loading Adminer (Oracle 19)..." + +# Set default values if not provided +MEMORY=${MEMORY:-256M} +UPLOAD=${UPLOAD:-2048M} +PORT=${PORT:-80} + +echo "[adminer] Starting PHP server (http://0.0.0.0:${PORT} in Docker):" +echo "-> memory_limit=${MEMORY}" +echo "-> upload_max_filesize=${UPLOAD}" +echo "-> post_max_size=${UPLOAD}" +echo "-> port=${PORT}" + +# Execute PHP server +exec php \ + -d "memory_limit=${MEMORY}" \ + -d "upload_max_filesize=${UPLOAD}" \ + -d "post_max_size=${UPLOAD}" \ + -S "0.0.0.0:${PORT}" From 1d7a0adc8405971a77a93710a9ce46f3a68c377c Mon Sep 17 00:00:00 2001 From: OhMyFelix Date: Wed, 18 Feb 2026 15:41:52 +0000 Subject: [PATCH 2/5] CI: build on PRs, push only from master --- .github/workflows/docker.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 04b8e11..c694978 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -3,8 +3,9 @@ name: "Docker" on: workflow_dispatch: + pull_request: + push: - branches: ["master"] schedule: - cron: "0 8 * * 1" @@ -79,7 +80,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Login to DockerHub - if: github.ref == 'refs/heads/master' + if: github.event_name == 'push' && github.ref == 'refs/heads/master' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} @@ -109,7 +110,7 @@ jobs: docker stop $CONTAINER_ID - name: Build and push to registry - if: github.ref == 'refs/heads/master' + if: github.event_name == 'push' && github.ref == 'refs/heads/master' uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} From 8b5634352aed12d2638d01ec97843e2ac5256fd8 Mon Sep 17 00:00:00 2001 From: OhMyFelix Date: Sun, 22 Feb 2026 13:30:44 +0000 Subject: [PATCH 3/5] Oracle 19: download Instant Client from oracle.com --- adminer-oracle-19/Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/adminer-oracle-19/Dockerfile b/adminer-oracle-19/Dockerfile index d5bb72a..a673183 100644 --- a/adminer-oracle-19/Dockerfile +++ b/adminer-oracle-19/Dockerfile @@ -32,11 +32,11 @@ RUN apt-get update && \ wget https://github.com/vrana/adminer/releases/download/v$ADMINER_VERSION/adminer-$ADMINER_VERSION.php -O /srv/index.php # OCI8 (ORACLE) ################################################################ -RUN wget https://github.com/f00b4r/oracle-instantclient/raw/master/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip -O /tmp/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip && \ - wget https://github.com/f00b4r/oracle-instantclient/raw/master/instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip -O /tmp/instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip && \ - unzip /tmp/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip -d /usr/local/ && \ - unzip /tmp/instantclient-sdk-linux.x64-19.6.0.0.0dbru.zip -d /usr/local/ && \ - ln -s /usr/local/instantclient_19_6 /usr/local/instantclient && \ +RUN wget https://download.oracle.com/otn_software/linux/instantclient/1930000/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip -O /tmp/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip && \ + wget https://download.oracle.com/otn_software/linux/instantclient/1930000/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip -O /tmp/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip && \ + unzip /tmp/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ + unzip /tmp/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ + ln -s /usr/local/instantclient_19_30 /usr/local/instantclient && \ ln -s /usr/local/instantclient/libclntsh.so.19.1 /usr/local/instantclient/libclntsh.so && \ echo 'instantclient,/usr/local/instantclient' | pecl install oci8 && \ echo "extension=oci8.so" > /etc/php/8.4/cli/conf.d/00-oci8.ini From 4fa6b3be5619f4b333d5ecc1a132ef7ba711a3bf Mon Sep 17 00:00:00 2001 From: OhMyFelix Date: Sun, 22 Feb 2026 13:34:57 +0000 Subject: [PATCH 4/5] Oracle 19: force unzip overwrite for SDK archive --- adminer-oracle-19/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adminer-oracle-19/Dockerfile b/adminer-oracle-19/Dockerfile index a673183..a2599a2 100644 --- a/adminer-oracle-19/Dockerfile +++ b/adminer-oracle-19/Dockerfile @@ -34,8 +34,8 @@ RUN apt-get update && \ # OCI8 (ORACLE) ################################################################ RUN wget https://download.oracle.com/otn_software/linux/instantclient/1930000/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip -O /tmp/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip && \ wget https://download.oracle.com/otn_software/linux/instantclient/1930000/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip -O /tmp/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip && \ - unzip /tmp/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ - unzip /tmp/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ + unzip -o /tmp/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ + unzip -o /tmp/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ ln -s /usr/local/instantclient_19_30 /usr/local/instantclient && \ ln -s /usr/local/instantclient/libclntsh.so.19.1 /usr/local/instantclient/libclntsh.so && \ echo 'instantclient,/usr/local/instantclient' | pecl install oci8 && \ From 2257f58d769367ac1b34a170802bdd61e4e66651 Mon Sep 17 00:00:00 2001 From: OhMyFelix Date: Sun, 22 Feb 2026 13:38:47 +0000 Subject: [PATCH 5/5] Oracle 19: make clntsh symlink overwrite-safe --- adminer-oracle-19/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adminer-oracle-19/Dockerfile b/adminer-oracle-19/Dockerfile index a2599a2..34e796a 100644 --- a/adminer-oracle-19/Dockerfile +++ b/adminer-oracle-19/Dockerfile @@ -37,7 +37,7 @@ RUN wget https://download.oracle.com/otn_software/linux/instantclient/1930000/in unzip -o /tmp/instantclient-basic-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ unzip -o /tmp/instantclient-sdk-linux.x64-19.30.0.0.0dbru.zip -d /usr/local/ && \ ln -s /usr/local/instantclient_19_30 /usr/local/instantclient && \ - ln -s /usr/local/instantclient/libclntsh.so.19.1 /usr/local/instantclient/libclntsh.so && \ + ln -sf /usr/local/instantclient/libclntsh.so.19.1 /usr/local/instantclient/libclntsh.so && \ echo 'instantclient,/usr/local/instantclient' | pecl install oci8 && \ echo "extension=oci8.so" > /etc/php/8.4/cli/conf.d/00-oci8.ini