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 ...)をインストールすることですか、それとももっと短い方法がありますか?
最もエレガントではありませんが:
#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