Skip to main content

Creating Images Using a Dockerfile

Hands-On Lab


Photo of Travis Thomsen

Travis Thomsen

Course Development Director in Content





You’ve decided to Dockerize your weather-app. Before you can do this, you'll need to create an image for it. And you'll want to keep the image small, so you will create it using a multi-stage build. Using instructions in a Dockerfile, build the image, then test it by creating a container that uses it.

What are Hands-On Labs?

Hands-On Labs are scenario-based learning environments where learners can practice without consequences. Don't compromise a system or waste money on expensive downloads. Practice real-world skills without the real-world risk, no assembly required.

Creating Images Using a Dockerfile

In this hands-on lab, using instructions in a Dockerfile, we'll build an image and then test it by creating a container that uses it.

Log In

Log in to the environment using the credentials provided on the lab page either in a terminal session on your local machine or by clicking Instant Terminal.

Creating Images Using a Dockerfile

Create a Dockerfile.

  1. Change directory to weather-app.

    cd weather-app/
  2. Open the editor:

    vi Dockerfile
  3. Enter the Dockerfile contents:

    FROM node AS source
    RUN mkdir -p /node/weather-app
    ADD src/ /node/weather-app
    WORKDIR /node/weather-app
    RUN npm install
    FROM node:alpine
    LABEL org.label-schema.version=$APP_VERSION
    ENV NODE_ENV="production"
    COPY --from=source /node/weather-app /node/weather-app
    WORKDIR /node/weather-app
    EXPOSE 3000
    ENTRYPOINT ["./bin/www"]

Build the image.

  1. Change to the source directory:

    cd src
  2. Enter the following to get the Git commit hash:

    git log -1 --pretty=%H
  3. Drop back to the weather-app directory:

    cd ../
  4. Build the image:

    sudo docker image build -t linuxacademy/weather-app:<HASH> --build-arg VERSION=1.5 .

Deploy a test container using the image just created.

  1. Create the weather-app container:

    sudo docker container run -d --name weather-app -p 8080:3000 linuxacademy/weather-app:<HASH>


Congratulations on completing this lab!