Direttive del Dockerfile
Direttive Comuni
FROM
FROM immagine
- specifica l'Immagine di Base da cui si sta costruendo. Deve essere la prima istruzione del file.
RUN
Esecuzione di un comando all'interno dell'immagine in costruzione.
Vi sono due tipi di RUN:
RUN comando
- il comando è eseguito in una shell, che per default è /bin/sh -c su LinuxRUN ["eseguibile", "param1", "param2"]
- vettore di lancio di un comando qualsiasi, generato con exec
Un comando RUN che si estende su più linee ha ciascuna linea terminata dal carattere di escape, di default \
, immediatamente prima del NEWLINE.
LABEL
LABEL chiave=valore ...
Etichette a chiave.
MAINTAINER
MAINTAINER email
- gestore del Dockerfile corrente
Ddeprecato, usare p.es.
LABEL maintainer="michele@simioli.it"
CMD
CMD comando
- definisce il comando da eseguire al lancio del container, deve essercene esattamente uno.
Tre varianti di CMD:
CMD ["eseguibile","param1","param2"]
- vettore di lancio in formato execCMD comando param1 param2
- formato shellCMD ["param1", "param2"]
- parametri relativi allo ENTRYPOINT
ENTRYPOINT
Sintassi come CMD ma solo nei due formati:
ENTRYPOINT ["eseguibile", "param1", "param2"]
ENTRYPOINT comando param1 param2
WORKDIR
WORKDIR dir
- directory di lavoro per il comando, una sola
ADD
ADD sorgente... destinazione
- aggiunge i file locali sorgente alla destinazione sull'immagine
sorgente
può contenere caratteri jolly, e deve essere nel contesto del builddestinazione
deve essere un percorso assoluto o relativo a WORKDIR- la destinazione appartiene a UID=0 e PID=0
- se sorgente o destinazione terminano con / sono considerate directories
- in caso di copia multipla la destinazione deve essere una directory
- se la destinazione è una directory innestata, tutti i percorsi intermedi vengono creati
COPY
Stesso effetto e sintassi di ADD.
COPY sorgente... destinazione
ENV
ENV chiave[=]valore ...
- settaggio di variabili d'ambiente mell'immagine
- ci può essere un = o uno spazio come separatore
- ve ne possono essere più di uno
VOLUME
VOLUME "dir"
- crea un punto di montaggio per un volume fornito esternamente
- deve esserci un solo argomento, ma può essere un array in formato JSON
- "dir" deve essere un percorso assoluto
EXPOSE
EXPOSE porta
- porta TCP/IP su cui ascoltare a runtime
USER
USER utente
- definisce l'utente coi cui diritti viene eseguito CMD
Direttive Meno Comuni
SHELL
SHELL ["eseguibile", "parametro"]
- definisce la shell con cui eseguire i comandi seguenti
- default:
SHELL ["/bin/bash", "-c"]
- ve ne può essere più di uno definito nel Dockerfile: determina il comportamento per le istruzioni seguenti
ONBUILD
ONBUILD istruzione
- definisce un trigger, un comando che deve venire eseguito quando l'immagine corrente è nel FROM di un altro Dockerfile
- ve ne può essere più di uno
ARG
ARG nome[=valore]
- definisce un argomento per l'opzione di build --build-arg nome=valore
- ve ne può essere più di uno
- tutti gli argomenti forniti nel comando build devono essere previsti nel Dockerfile
- se un argomento non è fornito nel comando di build, ARG deve dargli un valore di default
STOPSIGNAL
STOPSIGNAL segnale
- determina il segnale che viene inviato al container dal comando docker stop ID - default SIGTERM