Dockerfile和dpkg命令

时间:2016-12-16 09:06:28

标签: dependencies dockerfile dpkg

我正在尝试创建一个Dockerfile来安装VuFind。

这是我的Dockerfile:

#Name of container: docker-vufind:3

# Pull base image
FROM ubuntu:16.04
MAINTAINER xxx  "xxx@mail.com"

#Install latest patches
RUN apt-get update && apt-get install -y \
    && apt-get install -y wget 

#Obtain the package
RUN wget http://downloads.sourceforge.net/vufind/vufind_3.1.1.deb?use_mirror=osdn -O vufind_3.1.1.deb

#Install it
RUN dpkg -i vufind_3.1.1.deb

#Install VuFind's dependecies
RUN apt-get install -y -f

我在Ubuntu的bash上启动了这些命令,软件工作正常,但似乎我无法使用Dockerfile获得相同的结果,因为dpkg命令因缺少依赖而失败。

The command '/bin/sh -c dpkg -i vufind_3.1.1.deb' returned a non-zero code: 1

在dpkg命令行之前安装dependecies(Apache,jdk,php ...)是创建工作Dockerfile的唯一方法还是有更短的方法?

4 个答案:

答案 0 :(得分:5)

不是最优雅但是:

#continue executing even if command fails
RUN dpkg -i vufind_3.1.1.deb || true

答案 1 :(得分:5)

使用apt版本1.1~exp11(自Ubuntu 16.04起可用),您可以直接使用apt安装.deb文件并解决依赖关系:

apt install ./vufind_3.1.1.deb

注意./

答案 2 :(得分:1)

稍微优雅一点。

# Run both commands together
RUN dpkg -i vufind_3.1.1.deb; apt-get install -y -f

答案 3 :(得分:0)

至少在我看来,这似乎是一种更清洁的选择。由于apt的CLI不稳定(如它们在Docker构建期间发出的警告),因此我选择使用gdebi-core软件包,该软件包可能无法包含所有.deb软件包及其依赖项:

sudo apt-get install gdebi-core
sudo gdebi /path/to/filename.deb

在超级用户上查看此answer,了解更多详细信息/