apt-add-repository: คำสั่งไม่พบข้อผิดพลาดใน Dockerfile


92

ฉันเพิ่งสร้างไฟล์ Docker ง่ายๆในเทอร์มินัลของฉันโดยพื้นฐานแล้วฉันทำสิ่งต่อไปนี้:

mkdir pgrouted
cd pgrouted
touch Dockerfile

ตอนนี้ฉันเปิดไฟล์ 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

อย่างไรก็ตามคุณไม่จำเป็นต้องใช้sudoใน Dockerfile เนื่องจากคำสั่งจะทำงานเป็นรูทตามค่าเริ่มต้นเว้นแต่คุณจะเปลี่ยนเป็นผู้ใช้รายอื่นด้วยUSERคำสั่ง


2
ฉันเพิ่มpt-get install software-properties-commonเป็นRUN pt-get install software-properties-commonคำสั่งแรกตอนนี้ฉันได้รับข้อผิดพลาดนี้chopapp.com/#8a4vdsnw
Alexander Solonik

1
ขึ้นอยู่กับรุ่น Ubuntu ของคุณอาจเป็นpython-software-propertiesหรือsoftware-properties-common
user2915097

4
บน ubuntu 16.04 สิ่งนี้ต้องการติดตั้งข้อมูลเพิ่มเติม 46MiB: / มากเกินไปที่จะดำเนินการคำสั่งง่ายๆ
cweiske

27
คุณสมบัติของซอฟต์แวร์ python หรือคุณสมบัติของซอฟต์แวร์ไม่ถูกต้อง
Jonathan 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

rmundoes apt-get updateผลกระทบของ ไม่มีจุดใดในการจัดเก็บข้อมูลเมตาของแพ็กเกจในเลเยอร์คอนเทนเนอร์ ถ้าคุณต้องการที่จะapt-get installแพคเกจเพิ่มเติมที่คุณควรทำใหม่apt-get updateอยู่แล้ว
Toxaris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.