A Dockerfile is a script that contains instructions for building a Docker image. Here is an example of a basic Dockerfile for building an image for a simple web application:
# Use an official Python runtime as the base image FROM python:3.8-slim-buster # Set the working directory in the container WORKDIR /app # Copy the requirements file into the container COPY requirements.txt . # Install the application dependencies RUN pip install --no-cache-dir -r requirements.txt # Copy the application code into the container COPY . . # Expose the port the application will run on EXPOSE 8000 # Run the application CMD ["python", "app.py"]
This Dockerfile uses the official Python 3.8 runtime image as the base image, sets the working directory in the container, copies the requirements file and the application code into the container, installs the dependencies, exposes the port the application will run on, and sets the command to run the application.
To build the image, you can navigate to the directory containing the Dockerfile and run the following command:
docker build -t my-image-name .
Pipeline to build the image and push it to a container registry
You can also use your CI/CD pipeline to build the image and push it to a container registry.
Here is an example of an Azure DevOps pipeline yaml file that can be used to build an application and then build a Docker image using that application:
# Starter pipeline # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml trigger: - master pool: vmImage: 'ubuntu-latest' variables: containerRegistry: 'myregistry' imageName: 'myimage' tag: '$(Build.BuildId)' steps: - script: | echo Building application... # Build application here displayName: 'Build application' - script: | echo Building Docker image... docker build -t $(containerRegistry)/$(imageName):$(tag) . displayName: 'Build Docker image' - script: | echo Pushing Docker image... docker push $(containerRegistry)/$(imageName):$(tag) displayName: 'Push Docker image'
The above pipeline will trigger when commits are made to the master branch and will run on an ubuntu-latest virtual machine. The pipeline sets a few variables such as the container registry, image name, and tag which can be customized as needed. The pipeline has three steps:
- The first step builds the application using a script. Replace this script with the appropriate command to build your application.
- The second step builds the Docker image using the built application. The
docker buildcommand is used to build the image and the
-tflag is used to specify the image name and tag.
- The third step pushes the built Docker image to the container registry using the
It’s important to note that this is a basic example and there are many more options and configurations that can be added to the pipeline to suit your specific needs.