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
Dockerfilefor theratingsmicroservice.{{< 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 installcommand you ran in the previous module. TheCMDcommand instructs Docker to run theratingsservice on port9080. -
Create an environment variable to store your user id which will be used to tag the docker image for
ratingsservice. 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
9080of the container to port9081of your computer, allowing you to access theratingsmicroservice 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
curlcommand:{{< 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.