Sto impostando una creazione automatica da cui vorrei produrre 2 immagini.
L'utilità è nella costruzione e nella distribuzione di una libreria: – un'image con le dependencies che verranno riutilizzate per la costruzione e il test su Travis – un'image per fornire le librerie software installate
Fondamentalmente, devo essere in grado di spingere un'image del contenitore in un certo punto (prima di build) e una dopo (dopo la costruzione e l'installazione).
È ansible? Non ho trovato niente di rilevante nei documenti di Dockerfile.
Puoi farlo usando le build di Docker Multi Stage. Avere due file Docker
Dockerfile
FROM alpine RUN apk update && apk add gcc RUN echo "This is a test" > /tmp/builtfile
Dockerfile-prod
FROM myapp:testing as source FROM alpine COPY --from=source /tmp/builtfile /tmp/builtfile RUN cat /tmp/builtfile
build.sh
docker build -t myapp:testing . docker build -t myapp:production -f Dockerfile-prod .
Quindi per spiegare ciò che facciamo è build l'image con le dependencies in primo luogo. Quindi, nel nostro secondo Dockerfile-prod
, includiamo solo una FROM della nostra image precedente. E copia il file costruito all'image di produzione.
Uscita tronca dalla mia generazione
[email protected]:~/so$ ./build.sh Step 1/3 : FROM alpine Step 2/3 : RUN apk update && apk add gcc Step 3/3 : RUN echo "This is a test" > /tmp/builtfile Successfully tagged myapp:testing Step 1/4 : FROM myapp:testing as source Step 2/4 : FROM alpine Step 3/4 : COPY --from=source /tmp/builtfile /tmp/builtfile Step 4/4 : RUN cat /tmp/builtfile This is a test Successfully tagged myapp:production
Per ulteriori informazioni, fare riferimento a https://docs.docker.com/engine/userguide/eng-image/multistage-build/#name-your-build-stages