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 Linux
  • RUN ["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 exec
  • CMD comando param1 param2 - formato shell
  • CMD ["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 build
  • destinazione 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