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

이 오류가 발생하는 이유는 무엇입니까?

답변:


121

apt-add-repository 는 기본 Ubuntu 이미지에 없습니다. 먼저 설치해야합니다. 시험apt-get install software-properties-common

그런데 명령을 사용하여 다른 사용자로 변경하지 않는 한 기본적으로 명령이 루트로 실행되기 때문에 Dockerfile에서 sudo 를 사용할 필요가 없습니다 USER.


2
내가 추가 않았다 pt-get install software-properties-common처음으로 RUN pt-get install software-properties-common이렇게, 지금은이 오류 얻을 같은 명령 chopapp.com/#8a4vdsnw
알렉산더 솔로 닉

1
당신에 우분투 버전을 따라가 될 수 있습니다 python-software-properties또는software-properties-common
user2915097

4
우분투 16.04에서는 46MiB 추가 데이터를 설치하려고합니다 : / 간단한 명령을 실행하기에는 너무 많습니다.
cweiske

27
나도 파이썬 소프트웨어 특성이나 소프트웨어 - 속성 - 일반이 유효하지 않습니다
조나단 Neufeld

10
여전히 오류가 발생하는 사람들을 위해. 업데이트를 넣고 같은 줄에 설치하여 해결했습니다 apt-get update && apt-get install -y software-properties-common.. 업데이트를 먼저 실행 한 다음 설치가 작동하지 않는 것 같습니다. Docker 버그 일 수 있음
FedFranz

57

apt-add-repository명령 을 실행하기 전에 다음 줄을 추가하십시오.

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

2
첫 줄에 --fix-missing을 추가해야했습니다.
Edhowler

1
요점은 rm -rf /var/lib/apt/lists/*무엇입니까?
jumpnett

rm의 효과를 취소합니다 apt-get update. 컨테이너 계층에 패키지 메타 데이터를 저장하는 것은 의미가 없습니다. 나중에 apt-get install추가 패키지를 원하면 apt-get update어쨌든 새로해야 합니다.
Toxaris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.