diff --git a/docs/Dockerfile b/docs/Dockerfile
new file mode 100644
index 000000000..24b6ecc2e
--- /dev/null
+++ b/docs/Dockerfile
@@ -0,0 +1,6 @@
+FROM python:3.7-slim
+RUN apt-get update
+RUN apt-get -y install git
+RUN pip3 install -U sphinx==4.1.1 myst-parser pygments sphinx-rtd-theme sphinx-autobuild gitpython
+EXPOSE 8001
+CMD ["sphinx-autobuild", "--host", "0.0.0.0", "--port", "8001", "/home/flink-cdc/docs", "/home/flink-cdc/docs/_build/html"]
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 000000000..a48bb83f3
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,17 @@
+This README gives an overview of how to build the documentation of Flink CDC.
+
+### Build the site locally
+Make sure you have installed [Docker](https://docs.docker.com/engine/install/) and started it on you local environment.
+
+From the directory of this module (`docs`), use the following command to start the site.
+
+```sh
+./docs_site.sh start
+```
+Then the site will run and can be viewed at http://localhost:8001, any update on the `docs` will be shown in the site without restarting. 
+
+Of course, you can use the following command to stop the site.
+
+```sh
+./docs_site.sh stop
+```
diff --git a/docs/docs_site.sh b/docs/docs_site.sh
new file mode 100755
index 000000000..4cd9a0e63
--- /dev/null
+++ b/docs/docs_site.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+################################################################################
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+set -e
+
+docs_container_name="flink-cdc-docs_container"
+docs_image_name="flink-cdc-docs"
+port=8001
+host=localhost
+
+function start_docs_server() {
+  project_dir="$(dirname "$(pwd)")"
+  echo "starting docs server....."
+  docker build -t ${docs_image_name} -f ${project_dir}/docs/Dockerfile .
+  docker run -d -it -p ${port}:${port} --rm -v "${project_dir}":/home/flink-cdc --name ${docs_container_name} ${docs_image_name}
+  echo "docs server is running on  http://${host}:${port}"
+}
+
+function stop_docs_server() {
+  echo "stopping docs server....."
+  docker stop ${docs_container_name}
+  echo "stop docs server successfully."
+}
+
+if ! command -v docker &> /dev/null
+then
+	echo "Docker must be installed to run the docs locally"
+	echo "Please see docs/README.md for more details"
+	exit 1
+fi
+
+if  [[ $1 = "start" ]]; then
+  start_docs_server
+elif [[ $1 = "stop" ]]; then
+  stop_docs_server
+else
+  echo "Usage:"
+  echo "$0 start"
+  echo "$0 stop"
+fi
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 5f56d094f..10cc049cc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -181,6 +181,7 @@ under the License.
                         <!-- Docs -->
                         <exclude>**/*.md</exclude>
                         <exclude>docs/Makefile</exclude>
+                        <exclude>docs/Dockerfile</exclude>
                         <exclude>docs/make.bat</exclude>
                         <exclude>docs/_templates/version.html</exclude>
                         <!-- Tests -->