从昨天开始无法在Dockerfile上运行Java

时间:2019-04-18 14:13:06

标签: java docker dockerfile

我有一个量角器,我需要在Dockerfile中使用java来运行selenium-server.jar文件。

这是我的Dockerfile

FROM node:latest


ENV CHROME_VERSION "google-chrome-stable"
RUN sed -i -- 's&deb http://deb.debian.org/debian jessie-updates main&#deb http://deb.debian.org/debian jessie-updates main&g' /etc/apt/sources.list \
  && apt-get -o Acquire::Check-Valid-Until=false update && apt-get -o Acquire::Check-Valid-Until=false install wget -y
ENV CHROME_VERSION "google-chrome-stable"
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
  && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list \
  && apt-get -o Acquire::Check-Valid-Until=false update && apt-get -qqy --allow-unauthenticated install ${CHROME_VERSION:-google-chrome-stable}



# Add the dependencies to get the xenial apt sources
RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
RUN echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
RUN apt-get -y update

# Add these silent accept - since oracle installer asks for permission to install java-version-8
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections

# Install java-8 


RUN apt install -y oracle-java8-installer && apt install oracle-java8-set-default

此设置一直运行到昨天,但是从那以后我一直收到此错误

 download failed
Oracle JDK 8 is NOT installed.
dpkg: error processing package oracle-java8-installer (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 oracle-java8-installer
E: Sub-process /usr/bin/dpkg returned an error code (1)
The command '/bin/sh -c apt install -y oracle-java8-installer && apt install oracle-java8-set-default' returned a non-zero code: 100

现在在将此问题标记为重复之前,请查看我已经经历了很多类似的SO帖子并应用了提及的所有更改,但错误仍然存​​在或出现新的错误,这又导致无法解决此问题下载错误。

我已经尝试了thisthisthisthisthisthis,{{3} },但无法解决它。

完整的日志文件为this。如果需要,我可以发布尝试应用上述解决方案时遇到的错误。

寻找任何指针来解决此问题。

2 个答案:

答案 0 :(得分:0)

除非您明确告知不要(link: function(scope, elm, attrs) { var slider; scope.$watch('slideit', function() { if(slider) { slider.destroySlider(); } scope.bestDeals = scope.slideit; if (scope.bestDeals && scope.bestDeals.length > 0) { $timeout(function() { slider = elm.bxSlider({ captions: true, auto: true, autoControls: true, slideWidth: 110, minSlides: 1, maxSlides: 6, moveSlides: 1, slideMargin: 10, pager: false, autoHover: true, }); }); } }); scope.$on('destroy', function() { if (slider) { slider.destroySlider(); } }); }, ),否则Docker将记住运行每个命令的结果。特别是,如果认为已经完成此操作,它将跳过运行docker build --no-cache步骤。

与此同时,Debian和Ubuntu存储库经常更新,并且在更新时,它们会删除软件包的旧版本。这意味着,如果您使用的是昨天版本的软件包缓存,则在重新运行apt-get update之前,您将看到“下载失败”错误,就像您看到的一样。

在Docker上下文中,对此的正确答案是始终在同一apt-get update步骤中运行apt-get updateapt-get install 。您可以将RUN的结尾更改为

Dockerfile

一旦您已经走过了最初的开发阶段,最好在Dockerfile中只有一个RUN apt-get update -y \ && apt install oracle-java8-installer oracle-java8-set-default 命令,这样一来便可以安装所需的所有运行时依赖项。

答案 1 :(得分:0)

您真的需要Oracle JDK吗?在过程中,我使用来自openjdk的Dockerfile的内容从节点构建映像并安装了Java:https://github.com/docker-library/openjdk/blob/master/8/jdk/Dockerfile

不过,在您的情况下,我将构建集中式硒服务器或在CI管道中使用java -cp "Test.jar:lib/*" my.package.MainClass