web-dev-qa-db-ja.com

Dockerfileとdpkgコマンド

VuFindをインストールするためのDockerfileを作成しようとしています。

これは私のDockerfileです:

#Name of container: docker-vufind:3

# Pull base image
FROM ubuntu:16.04
MAINTAINER xxx  "[email protected]"

#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で起動し、ソフトウェアは正常に動作しましたが、依存関係がないためにdpkgコマンドが失敗したため、Dockerfileで同じ結果を取得できないようです。

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

動作するDockerfileを作成する唯一の方法は、dpkgコマンドラインの前に依存関係(Apache、jdk、php ...)をインストールすることですか、それとももっと短い方法がありますか?

10
Pickeroll

最もエレガントではありませんが:

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

Aptバージョン 1.1〜exp11 (Ubuntu 16.04以降で利用可能)では、aptだけで.debファイルをインストールし、依存関係を直接解決できます。

apt install ./vufind_3.1.1.deb

./

6
Murmel

少なくとも私の場合は、よりクリーンな代替手段が見つかったようです。 aptのCLIは安定していないため(Dockerのビルド中に警告されるため)、gdebi-coreパッケージとその依存関係を検出できないパッケージ.debを使用することにしました。

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

詳細については、スーパーユーザーでこれを確認してください answer

0
Anas Tiour