2.9 KiB
title | overview | weight | owner | test |
---|---|---|---|---|
Run ratings in Docker | Run a single microservice in a Docker container. | 20 | istio/wg-docs-maintainers | no |
{{< boilerplate work-in-progress >}}
This module shows how you create a Docker image and run it locally.
-
Download the
Dockerfile
for theratings
microservice.{{< text bash >}} $ curl -s {{< github_file >}}/samples/bookinfo/src/ratings/Dockerfile -o Dockerfile {{< /text >}}
-
Observe the
Dockerfile
.{{< text bash >}} $ cat Dockerfile {{< /text >}}
Note that it copies the files into the container's filesystem and then runs the
npm install
command you ran in the previous module. TheCMD
command instructs Docker to run theratings
service on port9080
. -
Create an environment variable to store your user id which will be used to tag the docker image for
ratings
service. For example,user
.{{< text bash >}} $ export USER=user {{< /text >}}
-
Build a Docker image from the
Dockerfile
:{{< text bash >}} $ docker build -t $USER/ratings . ... Step 9/9 : CMD node /opt/microservices/ratings.js 9080 ---> Using cache ---> 77c6a304476c Successfully built 77c6a304476c Successfully tagged user/ratings:latest {{< /text >}}
-
Run ratings in Docker. The following docker run command instructs Docker to expose port
9080
of the container to port9081
of your computer, allowing you to access theratings
microservice on port9081
.{{< text bash >}} $ docker run --name my-ratings --rm -d -p 9081:9080 $USER/ratings {{< /text >}}
-
Access http://localhost:9081/ratings/7 in your browser or use the following
curl
command:{{< text bash >}} $ curl localhost:9081/ratings/7 {"id":7,"ratings":{"Reviewer1":5,"Reviewer2":4}} {{< /text >}}
-
Observe the running container. Run the docker ps command to list all the running containers and notice the container with the image
<your user name>/ratings
.{{< text bash >}} $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 47e8c1fe6eca user/ratings "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:9081->9080/tcp elated_stonebraker ... {{< /text >}}
-
Stop the running container:
{{< text bash >}} $ docker stop my-ratings {{< /text >}}
You have learned how to package a single service into a container. The next step is to learn how to deploy the whole application to a Kubernetes cluster.