Book Image

Docker for Serverless Applications

By : Chanwit Kaewkasi
Book Image

Docker for Serverless Applications

By: Chanwit Kaewkasi

Overview of this book

Serverless applications have gained a lot of popularity among developers and are currently the buzzwords in the tech market. Docker and serverless are two terms that go hand-in-hand. This book will start by explaining serverless and Function-as-a-Service (FaaS) concepts, and why they are important. Then, it will introduce the concepts of containerization and how Docker fits into the Serverless ideology. It will explore the architectures and components of three major Docker-based FaaS platforms, how to deploy and how to use their CLI. Then, this book will discuss how to set up and operate a production-grade Docker cluster. We will cover all concepts of FaaS frameworks with practical use cases, followed by deploying and orchestrating these serverless systems using Docker. Finally, we will also explore advanced topics and prototypes for FaaS architectures in the last chapter. By the end of this book, you will be in a position to build and deploy your own FaaS platform using Docker.
Table of Contents (15 chapters)
Title Page
Packt Upsell
Contributors
Preface
Index

Deploying Fn on Docker Swarm


In this example, we start an Fn cluster on a Swarm-scoped network.

Starting with deploying a network, we use weaveworks/net-plugin as the backbone network for stability reasons. Please note that the network must be attachable and the subnet must be inside the scope of  10.32.0.0/16. So, 10.32.3.0/24 is just fine here:

$ docker network create \
  --driver weaveworks/net-plugin:2.1.3
  --attachable \
  --subnet 10.32.3.0/24 \
  fn_net

Then we prepare a volume for the datastore. As this section also wanted to demonstrate a product-grade setup, we use MySQL as the store rather than the default SQLite3. Using MySQL allows us to horizontally scale the number of Fn Servers.

The volume will be created using the docker volume create command. If we'd like to set up a MySQL cluster, the setups would be a bit more complex than this, but it will not be covered by this book:

$ docker volume create mysql_vol

This is the docker run command to start an instance of MySQL. We just attach...