2016-02-10 46 views
6

Özel bir python modülünü yüklemek için resmi docker postgres resmini genişletmeye çalışıyorum, böylece bir plpython3 saklı yordamını kullanmaktan kullanabilirim.Docker resmi postgres resmi büyütme

İşte

FROM postgres:9.5 
RUN apt-get update && apt-get install -y postgresql-plpython3-9.5 python3 
ADD ./repsug/ /opt/smtnel/repsug/ 
WORKDIR /opt/smtnel/repsug/ 
RUN ["python3", "setup.py", "install"] 
WORKDIR/

Benim sorum benim dockerfile var: Ben EntryPoint ve CMD benim Dockerfile komutları eklemem gerekir mi? Ya da temel görüntüden "miras" mı?

Resmi readme.md'deki örnek, ENTRYPOINT veya CMD olmadan yalnızca yerel ayarı değiştiren Dockerfile öğesini gösterir.

Ayrıca, benioku dosyasında, özel sh ve/veya sql betiklerini çalıştırarak görüntüyü genişletebileceğimi okudum. Özel resmimi oluşturmak yerine bu özelliği kullanmalı mıyım? Bu durumda soru, komut dosyalarının her defasında değil, "yükleme zamanı" nda yalnızca bir kez çalıştırıldığından nasıl emin olduğumdur? Yani, veritabanı zaten oluşturulmuş ve doldurulmuşsa, bunun üzerine yazmak istemem.

sayesinde Awer bunu miras EntryPoint geçersiz olacaktır Dockerfile yeni EntryPoint tanımlarsanız

+0

bence, ENTRYPOINT ve CMD devralınmıştır, ancak sadece böyle bir komutunuz olabileceğinden, yalnızca sonuncu geçerli olacaktır, bu yüzden son CMD veya ENTRYPOINT olacak şekilde bir tane eklerseniz kullanılmış olmak – user2915097

cevap

5

. Bu durumda, Postgres otomatik olarak başlatılamayacaktır (aynı ENTRYPOINT yazmıyorsanız).

https://docs.docker.com/engine/reference/builder/#entrypoint

Ayrıca resmi postgres görüntü size /docker-entrypoint-initdb.d klasörde/.sh dosyaları .sql ekleyelim, bu nedenle veritabanı başlatılır kez onlar yürütülebilir. Son olarak, bu Postgres'in verilerinizi kaldırmasını istemiyorsanız, /var/lib/postgresql/data klasörü ile bunların her biri için bir docker run ... komutunun arasına bir birim ekleyebilirsiniz.