Dockerfile 和 dpkg 命令

Dockerfile and dpkg command

我正在尝试创建一个 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 命令行之前安装依赖项(Apache、jdk、php...)是创建工作 Dockerfile 的唯一方法还是有更短的方法?

不是最优雅的但是:

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

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

apt install ./vufind_3.1.1.deb

注意./

似乎找到了一个更清洁的替代品,至少对我来说是这样。由于 apt 的 CLI 不稳定(因为他们在 Docker 构建期间发出警告),我选择使用包 gdebi-core,它可以安装 .deb 包及其依赖项:

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

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

稍微优雅一点。

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