2016-02-10 22 views
6

Sto tentando di estendere l'immagine dockgr ufficiale di Postgres per installare un modulo python personalizzato in modo da poterlo utilizzare con una procedura memorizzata in plpython3.Estensione docker immagine postgres

Ecco la mia dockerfile

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/

La mia domanda è: devo aggiungere EntryPoint e CMD comandi al mio Dockerfile? O sono "ereditati" dall'immagine di base?

L'esempio nel file readme.md mostra un Dockerfile che modifica solo le impostazioni locali, senza ENTRYPOINT o CMD.

Ho anche letto nel readme che posso estendere l'immagine eseguendo script sh e/o sql personalizzati. Dovrei usare questa funzione invece di creare la mia immagine personalizzata? La domanda in questo caso è come mi assicuro che gli script vengano eseguiti una volta sola al "tempo di installazione" e non ogni volta? Voglio dire, se il database è già stato creato e popolato, non vorrei sovrascriverlo.

Grazie, Awer

+0

a mio parere, ENTRYPOINT e CMD sono ereditati, ma poiché è possibile avere solo uno di questi comandi, solo l'ultimo sarà valido, quindi se ne aggiungi uno, poiché sarà l'ultimo CMD o ENTRYPOINT, sarà essere usato – user2915097

risposta

5

Se si definisce un nuovo EntryPoint nella vostra Dockerfile avrà la precedenza l'EntryPoint ereditato. In tal caso, Postgres non potrà essere inizializzato automaticamente (a meno che tu non abbia scritto lo stesso ENTRYPOINT).

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

Inoltre, l'immagine ufficiale postgres consentono di aggiungere sql/file .sh nella cartella /docker-entrypoint-initdb.d, in modo che possono essere eseguiti una volta che il database viene inizializzato.

Infine, se non si desidera che Postgres rimuova i dati, è possibile montare un volume tra la cartella /var/lib/postgresql/data e una cartella locale in ciascun comando docker run ... per mantenerli.

Problemi correlati