Basis van cloud en containers
FROM python:slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]Welke combinatie van de opdracht die bij het bouwen van het image met docker build wordt uitgevoerd en de opdracht die bij het starten van een container met docker run wordt uitgevoerd, is voor het bovenstaande Dockerfile juist?
- ABij de build: pip install; bij het starten: python app.py
- BBij de build: pip install en python app.py; bij het starten: python app.py
- CBij de build: niets; bij het starten: pip install en python app.py
Antwoord en toelichting tonen
Antwoord: A. Bij de build: pip install; bij het starten: python app.py
RUN voert een opdracht uit terwijl het image wordt gebouwd en slaat het resultaat (hier de geïnstalleerde bibliotheken) als een nieuwe laag in het image op. CMD legt alleen als deel van de configuratie van het image de standaardopdracht vast die bij het starten van een container wordt uitgevoerd; tijdens de build wordt ze niet uitgevoerd. De bibliotheken worden dus één keer, bij de build, geïnstalleerd, en python app.py draait telkens wanneer een container start. Staat er in docker run een opdracht na de naam van het image, dan vervangt die de inhoud van CMD.