You need a written, versioned recipe for how your app's image is assembled and what it runs on start. Dockerfile instructions like FROM, COPY, RUN and CMD describe each step. Use RUN for work done at build time and CMD or ENTRYPOINT for what runs when a container starts. People often expect EXPOSE to publish a port or mix up CMD and ENTRYPOINT, both favourite interview questions.