我有一套量角器,我需要java在我的 Dockerfile 中運行該selenium-server.jar文件。這是我的 DockerfileFROM node:latestENV 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 -yENV 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 sourcesRUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.listRUN echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.listRUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886RUN apt-get -y update# Add these silent accept - since oracle installer asks for permission to install java-version-8RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selectionsRUN 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
2 回答

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
你真的需要oracle jdk嗎?在傳遞中,我使用來自 openjdk 的 Dockerfile 的內容從節點構建圖像并安裝了 java:https ://github.com/docker-library/openjdk/blob/master/8/jdk/Dockerfile
不過,在您的情況下,我會構建一個集中式 selenium 服務器或使用directConnect
CI 管道。

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
Docker 會記住運行每個命令的結果,除非你明確告訴它不要(docker build --no-cache
)。apt-get update
特別是,如果它認為它已經完成了這一步,它將跳過運行該步驟。
同時,Debian 和 Ubuntu 存儲庫更新頻繁,當它們更新時,它們會刪除舊版本的軟件包。這意味著,如果您使用的是昨天版本的包緩存,您將收到“下載失敗”錯誤,就像您看到的一樣,直到您重新運行apt-get update
.
在 Docker 上下文中,對此的正確答案是始終在同一步驟apt-get update
中apt-get install
RUN
運行。你可能會改變你的結尾Dockerfile
看起來像
RUN apt-get update -y \ && apt install oracle-java8-installer oracle-java8-set-default
一旦你已經過了最初的開發階段,apt install
在你的 Dockerfile 中只使用一個命令來安裝你需要的所有運行時依賴項可能是一個好習慣。
添加回答
舉報
0/150
提交
取消