在Docker容器中安装Oracle客户端

thigvfpy  于 2023-03-07  发布在  Docker
关注(0)|答案(5)|浏览(294)

我正在使用Alpine Linux作为基础映像,我需要安装一个Oracle客户端本机库,我相信您可以从这里下载:
https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
1.看起来我必须登录才能下载,有人知道如何在不登录的情况下下载客户端库的zip文件吗?
1.有人知道如何在bash脚本或dockerfile中正确安装客户端库吗?

yeotifhr

yeotifhr1#

我已经想出了一些不同的方法来安装甲骨文即时客户端在ubuntu Docker,它可能会帮助其他人
请遵循以下简单步骤:
1.从oracle官方下载中心下载oracle即时客户端(.rpm文件)
1.转换为.deb(您可以使用apt-get install alien)并移动到工作目录中的某个位置。
1.现在更新您的Dockerfile并进行构建

RUN apt-get update
WORKDIR /opt
ADD ./ORACLE-INSTANT-CLIENT.deb  /opt
#if libaio also required
RUN apt-get install libaio1 
RUN dpkg -i oracle-instantclient.deb
7ivaypg9

7ivaypg92#

下面是一个基于Debian 10(Buster)的官方PHP-FPM映像的工作解决方案。下面的Dockerfile使用RPM包和alien安装Oracle即时客户端18.5(basiclitedevel)。
正如克里斯托弗·琼斯所写的,这些文件目前可以在没有甲骨文账户的情况下下载。

FROM php:7.2.32-fpm

# see https://help.ubuntu.com/community/Oracle%20Instant%20Client
RUN apt-get update && apt-get install -y --no-install-recommends alien libaio1 wget && \
    wget https://download.oracle.com/otn_software/linux/instantclient/185000/oracle-instantclient18.5-basiclite-18.5.0.0.0-3.x86_64.rpm && \
    wget https://download.oracle.com/otn_software/linux/instantclient/185000/oracle-instantclient18.5-devel-18.5.0.0.0-3.x86_64.rpm && \
    alien -i oracle-instantclient18.5-basiclite-18.5.0.0.0-3.x86_64.rpm && \
    alien -i oracle-instantclient18.5-devel-18.5.0.0.0-3.x86_64.rpm
ENV LD_LIBRARY_PATH="/usr/lib/oracle/18.5/client64/lib:${LD_LIBRARY_PATH}"
yqkkidmi

yqkkidmi3#

如果要在运行时下载oracle,则可以运行以下命令

FROM ruby:3.0

ENV LD_LIBRARY_PATH=/opt/oracle/instantclient_21_4

RUN apt-get update && \
    apt-get install -y libpq-dev zlib1g-dev build-essential shared-mime-info libaio1 libaio-dev unzip wget --no-install-recommends && \
    wget https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-sdk-linux.x64-21.4.0.0.0dbru.zip && \
    wget https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-sqlplus-linux.x64-21.4.0.0.0dbru.zip && \
    wget https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip && \
    mkdir -p /opt/oracle && \
    cp instantclient-* /opt/oracle/ && \
    cd /opt/oracle/ && \
    unzip instantclient-basic-linux.x64-21.4.0.0.0dbru.zip && \
    unzip instantclient-sdk-linux.x64-21.4.0.0.0dbru.zip && \
    unzip instantclient-sqlplus-linux.x64-21.4.0.0.0dbru.zip && \
    rm -rf /var/lib/apt/lists/* instantclient-basic-linux.x64-21.4.0.0.0dbru.zip instantclient-sdk-linux.x64-21.4.0.0.0dbru.zip instantclient-sqlplus-linux.x64-21.4.0.0.0dbru.zip && \
    apt -y clean && \
    apt -y remove wget unzip && \
    apt -y autoremove && \
    rm -rf /var/cache/apt

您可以通过指定上述版本来下载instantclient的特定版本
如果使用ruby on rails应用程序,ruby-oci需要这两个包

利比亚1
利比亚-发展

icomxhvb

icomxhvb4#

你不想使用Alpine Linux,因为你需要破解它,它可能变得不稳定。更多评论请参见https://stackoverflow.com/a/53291026/4799035
另请参阅https://github.com/oracle/docker-images/blob/master/OracleInstantClient/dockerfiles/19/Dockerfile,它不需要任何登录。
总之,在Oracle Linux 7上:

yum -y install oracle-release-el7
yum -y install oracle-instantclient19.3-basic && rm -rf /var/cache/yum

更新:Oracle在https://github.com/oracle/docker-images/pkgs/container/oraclelinux7-instantclienthttps://github.com/oracle/docker-images/pkgs/container/oraclelinux8-instantclient上提供了Docker映像,可以像这样拉取:

docker pull ghcr.io/oracle/oraclelinux7-instantclient:21

以及

docker pull ghcr.io/oracle/oraclelinux8-instantclient:21
btxsgosb

btxsgosb5#

正如甲骨文官方声明:即时客户端可用于Docker Docker文件可在GitHub上获得。预建映像可从GitHub容器注册表中获得。https://www.oracle.com/database/technologies/instant-client.html

相关问题