From a1579c1654a2ddf9f6fc8f05f62b37bb09303752 Mon Sep 17 00:00:00 2001 From: wendrul <53628737+wendrul@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:57:40 +0100 Subject: [PATCH] fix: oracledb tag for native workers + client not working on arm systems (#5162) * New migration for oracledb * fix oracledb on ARM64 systems --- .../20250128162249_addback_oracledb.down.sql | 1 + .../20250128162249_addback_oracledb.up.sql | 2 ++ docker/DockerfileFullEe | 20 ++++++++++++++++++- docker/DockerfileNsjail | 20 ++++++++++++++++++- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 backend/migrations/20250128162249_addback_oracledb.down.sql create mode 100644 backend/migrations/20250128162249_addback_oracledb.up.sql diff --git a/backend/migrations/20250128162249_addback_oracledb.down.sql b/backend/migrations/20250128162249_addback_oracledb.down.sql new file mode 100644 index 0000000000000..d2f607c5b8bd6 --- /dev/null +++ b/backend/migrations/20250128162249_addback_oracledb.down.sql @@ -0,0 +1 @@ +-- Add down migration script here diff --git a/backend/migrations/20250128162249_addback_oracledb.up.sql b/backend/migrations/20250128162249_addback_oracledb.up.sql new file mode 100644 index 0000000000000..c25f8568a6549 --- /dev/null +++ b/backend/migrations/20250128162249_addback_oracledb.up.sql @@ -0,0 +1,2 @@ +-- Add up migration script here +UPDATE config set config = jsonb_set(config, '{worker_tags}', config->'worker_tags' || '["oracledb"]'::jsonb) where name = 'worker__native' and config @> '{"worker_tags": ["nativets", "postgresql", "mysql", "graphql", "snowflake", "bigquery", "mssql"]}'::jsonb AND NOT config->'worker_tags' @> '"oracledb"'::jsonb; diff --git a/docker/DockerfileFullEe b/docker/DockerfileFullEe index 9b2e1a9cf0d4f..72a89f535f317 100644 --- a/docker/DockerfileFullEe +++ b/docker/DockerfileFullEe @@ -1,3 +1,20 @@ +FROM alpine:3.14 AS oracledb-client + +# Oracle DB Client for amd64 +COPY --from=ghcr.io/oracle/oraclelinux9-instantclient:23 /usr/lib/oracle/23/client64/lib /opt/oracle/23/amd64/lib + +# Oracle DB Client for arm64 +RUN mkdir -p /opt/oracle/23/arm64 \ + && cd /opt/oracle/23/arm64 \ + && wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linux-arm64.zip \ + && unzip instantclient-basiclite-linux-arm64.zip && rm instantclient-basiclite-linux-arm64.zip && mv instantclient* ./lib + +RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ + mv /opt/oracle/23/arm64/lib /opt/oracle/23/lib; \ + else \ + mv /opt/oracle/23/amd64/lib /opt/oracle/23/lib; \ + fi + FROM ghcr.io/windmill-labs/windmill-ee:dev COPY --from=rust:1.81.0 /usr/local/cargo /usr/local/cargo @@ -5,11 +22,12 @@ COPY --from=rust:1.81.0 /usr/local/rustup /usr/local/rustup RUN pip3 install ansible +# dotnet SDK COPY --from=bitnami/dotnet-sdk:9.0.101-debian-12-r0 /opt/bitnami/dotnet-sdk /opt/dotnet-sdk RUN ln -s /opt/dotnet-sdk/bin/dotnet /usr/bin/dotnet ENV DOTNET_ROOT="/opt/dotnet-sdk/bin" # Oracle DB Client -COPY --from=ghcr.io/oracle/oraclelinux9-instantclient:23 /usr/lib/oracle/23/client64/lib /opt/oracle/23/lib +COPY --from=oracledb-client /opt/oracle/23/lib /opt/oracle/23/lib RUN apt-get -y update && apt-get install -y libaio1 RUN echo /opt/oracle/23/lib > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig diff --git a/docker/DockerfileNsjail b/docker/DockerfileNsjail index 975092006bc43..67c5bba5d931f 100644 --- a/docker/DockerfileNsjail +++ b/docker/DockerfileNsjail @@ -21,6 +21,23 @@ RUN apt-get -y update \ RUN git clone -b master --single-branch https://github.com/google/nsjail.git . && git checkout dccf911fd2659e7b08ce9507c25b2b38ec2c5800 RUN make +FROM alpine:3.14 AS oracledb-client + +# Oracle DB Client for amd64 +COPY --from=ghcr.io/oracle/oraclelinux9-instantclient:23 /usr/lib/oracle/23/client64/lib /opt/oracle/23/amd64/lib + +# Oracle DB Client for arm64 +RUN mkdir -p /opt/oracle/23/arm64 \ + && cd /opt/oracle/23/arm64 \ + && wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linux-arm64.zip \ + && unzip instantclient-basiclite-linux-arm64.zip && rm instantclient-basiclite-linux-arm64.zip && mv instantclient* ./lib + +RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \ + mv /opt/oracle/23/arm64/lib /opt/oracle/23/lib; \ + else \ + mv /opt/oracle/23/amd64/lib /opt/oracle/23/lib; \ + fi + FROM ghcr.io/windmill-labs/windmill-ee:dev RUN apt-get update && apt-get install -y libprotobuf-dev libnl-route-3-dev @@ -30,12 +47,13 @@ COPY --from=rust:1.80.1 /usr/local/rustup /usr/local/rustup RUN pip3 install ansible +# dotnet SDK COPY --from=bitnami/dotnet-sdk:9.0.101-debian-12-r0 /opt/bitnami/dotnet-sdk /opt/dotnet-sdk RUN ln -s /opt/dotnet-sdk/bin/dotnet /usr/bin/dotnet ENV DOTNET_ROOT="/opt/dotnet-sdk/bin" # Oracle DB Client -COPY --from=ghcr.io/oracle/oraclelinux9-instantclient:23 /usr/lib/oracle/23/client64/lib /opt/oracle/23/lib +COPY --from=oracledb-client /opt/oracle/23/lib /opt/oracle/23/lib RUN apt-get -y update && apt-get install -y libaio1 RUN echo /opt/oracle/23/lib > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig