java - Docker phusion/baseimage 安装 oracle_db

标签 java docker oracle-sqldeveloper dockerfile

有人可以帮我在现有的 docker 镜像上安装 oracle_db 客户端吗?我非常努力地解决这个问题。看起来不可能用 phusion/baseimage 安装 oracle_db。

我的dockerfile是这样的:

FROM phusion/baseimage

MAINTAINER bugsbunny

RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" > /etc/apt/sources.list

RUN add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe"

RUN apt-get -y update 

RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q python-software-properties software-properties-common

ENV JAVA_VER 8

ENV JAVA_HOME /usr/lib/jvm/java-8-oracle

RUN echo 'deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' >> /etc/apt/sources.list && \
    echo 'deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' >> /etc/apt/sources.list && \
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C2518248EEA14886 && \
    apt-get update && \
    echo oracle-java${JAVA_VER}-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
    apt-get install -y --force-yes --no-install-recommends oracle-java${JAVA_VER}-installer oracle-java${JAVA_VER}-set-default && \
    apt-get clean && \
    rm -rf /var/cache/oracle-jdk${JAVA_VER}-installer

RUN update-java-alternatives -s java-8-oracle

RUN echo "export JAVA_HOME=/usr/lib/jvm/java-8-oracle" >> ~/.bashrc

RUN apt-get install nano

RUN apt-get install -y ksh

RUN echo "deb http://cz.archive.ubuntu.com/ubuntu trusty main" > /etc/apt/sources.list

RUN apt-get update 

RUN cd /home/ && wget http://launchpadlibrarian.net/333072908/libaio1_0.3.110-4_amd64.deb && dpkg -i libaio1_0.3.110-4_amd64.deb

RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

ADD mtf-release /home/mtf-release

ADD instantclient_12_2 /opt/oracle/instantclient_12_2

RUN sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf" && ldconfig

RUN  export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH

RUN  mkdir -p /opt/oracle/instantclient_12_2/network/admin

RUN export PATH=/opt/oracle/instantclient_12_2:$PATH


#ENTRYPOINT ["/usr/bin/python"]

如您所见,我需要 java:8 版本和 oracle_db 客户端、sqlplus 才能使我的 docker 工作。是否有任何合适的具有 java + oracledb 的 docker 镜像,或者无论如何将两个 docker 镜像合并为一个,以便我安装的两个镜像都能正常工作。谢谢。

有人可以帮助我使用两个 FROM 以及我需要的所有图像吗?

最佳答案

因此,您需要一个包含 Oracle 客户端和 Java 的 Docker 镜像。

Oracle为即时客户端提供了一个Docker镜像,Docker文件的源代码可以在 here 找到。 .

对于 Java,有许多可用的 Docker 镜像,例如 openjdk .

您可以使用 Docker 多阶段构建合并两个镜像。在此之前,请确保登录 docker store,转到 oracle instantclient image ,并接受许可证并拉取镜像docker pull store/oracle/database-instantclient:12.2.0.1

FROM store/oracle/database-instantclient:12.2.0.1 as oracle

FROM openjdk:8-jdk 
COPY --from=oracle /usr/lib/oracle /usr/lib/oracle
ENV PATH=$PATH:/usr/lib/oracle/12.2/client64/bin

构建上述 dockerfile 后,您将拥有一个包含 java 和 oracle instantclient 的 docker 镜像。

关于java - Docker phusion/baseimage 安装 oracle_db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48286353/

相关文章:

sql-server - 如何在SQL Developer中执行SQL Server存储过程?

java - HQL 不返回结果,但生成的 SQL 在 SQL Developer 上完美运行

java - 如何使用 Selenium 和 Java 禁用 Chrome 中的 cookie

docker - 无法建立与节点-1的连接

JavaFX - 多个网格 Pane - 只有一个正在连接,其余为空

docker - 如何确定哪些容器使用 docker 卷?

sql-server - 启动 Docker 容器时如何恢复 SQL Server 数据库?

oracle - 从 SQL Developer 将 CLOB 插入 Oracle 数据库

java - SimGrid。执行任务时如何接收和发送数据?

Java/Android 如何将 Activity 调用到方法中?