apt-add-repository:Dockerfileでコマンドが見つかりませんエラー


92

ターミナルで非常に単純なDockerファイルを作成しました。基本的に、次のことを行いました。

mkdir pgrouted
cd pgrouted
touch Dockerfile

ここで、nanoエディターでDockerファイルを開き、次のコマンドをDockerファイルに追加します。

FROM ubuntu

MAINTAINER Gautam <gautamx07@yahoo.com>

LABEL Description="pgrouting excercise" Vendor="skanatek" Version="1.0"

ENV BBOX="-122.8,45.4,-122.5,45.6"

# Add pgRouting launchpad repository
RUN sudo apt-add-repository -y ppa:ubuntugis/ppa
RUN sudo apt-add-repository -y ppa:georepublic/pgrouting
RUN sudo apt-get update

# Install pgRouting package (for Ubuntu 14.04)
RUN sudo apt-get install postgresql-9.3-pgrouting

# Install osm2pgrouting package
RUN sudo apt-get install osm2pgrouting

# Install workshop material (optional, but maybe slightly outdated)
RUN sudo apt-get install pgrouting-workshop

# For workshops at conferences and events:
# Download and install from http://trac.osgeo.org/osgeo/wiki/Live_GIS_Workshop_Install
RUN wget --no-check-certificate https://launchpad.net/~georepublic/+archive/pgrouting/+files/pgrouting-workshop_2.0.6-ppa1_all.deb

RUN sudo dpkg -i pgrouting-workshop_2.0.6-ppa1_all.deb

# Review: Not sure weather this should be in the dockerfile
RUN cp -R /usr/share/pgrouting/workshop ~/Desktop/pgrouting-workshop

# Log in as user "user"
RUN psql -U postgres

# Create routing database
RUN CREATE DATABASE routing;

# Add PostGIS functions
RUN CREATE EXTENSION postgis;

# Add pgRouting core functions
CREATE EXTENSION pgrouting;

# Download using Overpass XAPI (larger extracts possible than with default OSM API)
wget --progress=dot:mega -O "sampledata.osm" "http://www.overpass-api.de/api/xapi?*[bbox=${BBOX}][@meta]"

Dockerfile全体が一目でここに表示されます。

今、私がDockerfileをビルドしようとすると、次のようになります。

docker build -t gautam/pgrouted:v1 .

Dockerfileが実行され、次のエラーが発生します。

Step 4 : RUN sudo apt-add-repository -y ppa:ubuntugis/ppa
 ---> Running in c93c3c5fd5e8
sudo: apt-add-repository: command not found
The command '/bin/sh -c sudo apt-add-repository -y ppa:ubuntugis/ppa' returned a non-zero code: 1

なぜこのエラーが発生するのですか?

回答:


123

apt-add-repositoryはベースUbuntuイメージにありません。最初にインストールする必要があります。試してみてくださいapt-get install software-properties-common

ちなみに、コマンドで別のユーザーに変更しない限り、コマンドはデフォルトでrootとして実行されるため、Dockerfileでsudoを使用する必要はありませんUSER


2
私はpt-get install software-properties-common最初のRUN pt-get install software-properties-commonコマンドとして追加しましたが、そのように、今私はこのエラーを受け取り
Alexander Solonik 2015

1
Ubuntuのバージョンに応じて、次のいずれpython-software-propertiesかになりますsoftware-properties-common
user2915097 2015

4
ubuntu 16.04では、46MiBの追加データをインストールする必要があります:/単純なコマンドを実行するには多すぎます。
cweiske 2017

27
python-software-propertiesもsoftware-properties-commonも有効ではありません
JonathanNeufeld18年

11
まだエラーが発生している人のためだけに。更新とインストールを同じ行に配置することで解決しました:apt-get update && apt-get install -y software-properties-common。最初にアップデートを実行してからインストールするのはうまくいかないようです。おそらくDockerのバグ
FedFranz 2018年

58

apt-add-repositoryコマンドを実行する前にこれらの行を追加してください

RUN apt-get update && \
    apt-get install -y software-properties-common && \
    rm -rf /var/lib/apt/lists/*

2
最初の行に--fix-missingを追加する必要がありました。
エドハウラー2018

rm効果を元に戻しapt-get updateます。パッケージメタデータをコンテナレイヤーに保存しても意味がありません。後でapt-get installパッケージを追加したい場合は、apt-get updateとにかく新しいことを行う必要があります。
Toxaris
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.