有人可以帮我在现有的 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/