Use buildx to build images

Signed-off-by: Kevin Su <pingsutw@apache.org>
diff --git a/.github/workflows/deploy_docker_images.yml b/.github/workflows/deploy_docker_images.yml
index 849f491..d529ff9 100644
--- a/.github/workflows/deploy_docker_images.yml
+++ b/.github/workflows/deploy_docker_images.yml
@@ -50,52 +50,32 @@
       - name: Build with Maven
         run: mvn clean install -DskipTests
 
-      - name: Build submarine server
+      - name: Build and push submarine server
         run: ./dev-support/docker-images/submarine/build.sh
-      - name: Push submarine-server docker image
-        run: docker push apache/submarine:server-$SUBMARINE_VERSION
 
-      - name: Build submarine agent
+      - name: Build and push submarine agent
         run: ./dev-support/docker-images/agent/build.sh
-      - name: Push submarine-agent docker image
-        run: docker push apache/submarine:agent-$SUBMARINE_VERSION
 
-      - name: Build submarine database
+      - name: Build and push submarine database
         run: ./dev-support/docker-images/database/build.sh
-      - name: Push submarine-database docker image
-        run: docker push apache/submarine:database-$SUBMARINE_VERSION
 
-      - name: Build submarine jupyter
+      - name: Build and push submarine jupyter
         run: ./dev-support/docker-images/jupyter/build.sh
-      - name: Push submarine-jupyter docker image
-        run: docker push apache/submarine:jupyter-notebook-$SUBMARINE_VERSION
 
-      - name: Build submarine jupyter gpu
+      - name: Build and push submarine jupyter gpu
         run: ./dev-support/docker-images/jupyter-gpu/build.sh
-      - name: Push submarine-jupyter-gpu docker image
-        run: docker push apache/submarine:jupyter-notebook-gpu-$SUBMARINE_VERSION
 
-      - name: Build submarine operator
+      - name: Build and push submarine operator
         run: ./dev-support/docker-images/operator-v3/build.sh
-      - name: Push submarine-operator docker image
-        run: docker push apache/submarine:operator-$SUBMARINE_VERSION
 
-      - name: Build submarine mlflow
+      - name: Build and push submarine mlflow
         run: ./dev-support/docker-images/mlflow/build.sh
-      - name: Push submarine-mlflow docker image
-        run: docker push apache/submarine:mlflow-$SUBMARINE_VERSION
 
-      - name: Build submarine serve
+      - name: Build and push submarine serve
         run: ./dev-support/docker-images/serve/build.sh
-      - name: Push submarine-serve docker image
-        run: docker push apache/submarine:serve-$SUBMARINE_VERSION
 
-      - name: Build submarine quickstart
+      - name: Build and push submarine quickstart
         run: ./dev-support/examples/quickstart/build.sh
-      - name: Push submarine quickstart docker image
-        run: docker push apache/submarine:quickstart-$SUBMARINE_VERSION
 
-      - name: Build submarine cicd
+      - name: Build and push submarine cicd
         run: ./dev-support/cicd/build.sh
-      - name: Push submarine-cicd docker image
-        run: docker push apache/submarine:cicd-$SUBMARINE_VERSION
diff --git a/dev-support/cicd/build.sh b/dev-support/cicd/build.sh
index 3fb7e4b..2afd37e 100755
--- a/dev-support/cicd/build.sh
+++ b/dev-support/cicd/build.sh
@@ -29,4 +29,4 @@
 # build image
 echo "Start building the ${IMAGE} docker image ..."
 cd ${CURRENT_PATH}
-docker build -t ${IMAGE} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${IMAGE} .
diff --git a/dev-support/docker-images/agent/build.sh b/dev-support/docker-images/agent/build.sh
index 5330f63..5e8639e 100755
--- a/dev-support/docker-images/agent/build.sh
+++ b/dev-support/docker-images/agent/build.sh
@@ -44,7 +44,7 @@
 cd ${CURRENT_PATH}
 
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/docker-images/database/build.sh b/dev-support/docker-images/database/build.sh
index 1cae447..d0bf35c 100755
--- a/dev-support/docker-images/database/build.sh
+++ b/dev-support/docker-images/database/build.sh
@@ -32,7 +32,7 @@
 # build image
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
 cd ${CURRENT_PATH}
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean template file
 rm -rf ${CURRENT_PATH}/database
diff --git a/dev-support/docker-images/experiment-prehandler/build.sh b/dev-support/docker-images/experiment-prehandler/build.sh
index c1e94a3..a372341 100755
--- a/dev-support/docker-images/experiment-prehandler/build.sh
+++ b/dev-support/docker-images/experiment-prehandler/build.sh
@@ -39,12 +39,12 @@
 curl -L -o $tmpfile ${HADOOP_TAR_URL}
 mv $tmpfile ${CURRENT_PATH}/tmp/hadoop-3.3.3.tar.gz
 
-curl -L -o ${CURRENT_PATH}/tmp/hadoop-aws-3.3.3.jar https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.3/hadoop-aws-3.3.3.jar 
+curl -L -o ${CURRENT_PATH}/tmp/hadoop-aws-3.3.3.jar https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.3/hadoop-aws-3.3.3.jar
 curl -L -o ${CURRENT_PATH}/tmp/aws-java-sdk-bundle-1.12.267.jar https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.12.267/aws-java-sdk-bundle-1.12.267.jar
 
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
 cd ${CURRENT_PATH}
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/docker-images/jupyter-gpu/build.sh b/dev-support/docker-images/jupyter-gpu/build.sh
index 036bb42..04ea42b 100755
--- a/dev-support/docker-images/jupyter-gpu/build.sh
+++ b/dev-support/docker-images/jupyter-gpu/build.sh
@@ -29,4 +29,4 @@
 # build image
 echo "Start building the ${JUPYTER_IMAGE} docker image ..."
 cd ${CURRENT_PATH}
-docker build -t ${JUPYTER_IMAGE} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${JUPYTER_IMAGE} .
diff --git a/dev-support/docker-images/jupyter/build.sh b/dev-support/docker-images/jupyter/build.sh
index b1d24a8..0028cf8 100755
--- a/dev-support/docker-images/jupyter/build.sh
+++ b/dev-support/docker-images/jupyter/build.sh
@@ -29,4 +29,4 @@
 # build image
 echo "Start building the ${JUPYTER_IMAGE} docker image ..."
 cd ${CURRENT_PATH}
-docker build -t ${JUPYTER_IMAGE} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${JUPYTER_IMAGE} .
diff --git a/dev-support/docker-images/mlflow/build.sh b/dev-support/docker-images/mlflow/build.sh
index 4a00c5d..b6d014f 100755
--- a/dev-support/docker-images/mlflow/build.sh
+++ b/dev-support/docker-images/mlflow/build.sh
@@ -29,4 +29,4 @@
 # build image
 echo "Start building the ${MLFLOW_IMAGE} docker image ..."
 cd ${CURRENT_PATH}
-docker build -t ${MLFLOW_IMAGE} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${MLFLOW_IMAGE} .
diff --git a/dev-support/docker-images/operator-v3/build.sh b/dev-support/docker-images/operator-v3/build.sh
index eca60d9..3e50eb1 100755
--- a/dev-support/docker-images/operator-v3/build.sh
+++ b/dev-support/docker-images/operator-v3/build.sh
@@ -32,7 +32,7 @@
 
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/docker-images/operator/build.sh b/dev-support/docker-images/operator/build.sh
index 1320526..9737c04 100755
--- a/dev-support/docker-images/operator/build.sh
+++ b/dev-support/docker-images/operator/build.sh
@@ -32,7 +32,7 @@
 
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/docker-images/serve/build.sh b/dev-support/docker-images/serve/build.sh
index d8cc6a1..d6ed967 100755
--- a/dev-support/docker-images/serve/build.sh
+++ b/dev-support/docker-images/serve/build.sh
@@ -30,4 +30,4 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
diff --git a/dev-support/docker-images/submarine/build.sh b/dev-support/docker-images/submarine/build.sh
index 56b6720..01c450d 100755
--- a/dev-support/docker-images/submarine/build.sh
+++ b/dev-support/docker-images/submarine/build.sh
@@ -59,7 +59,7 @@
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
 
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/examples/mnist-pytorch/DDP/build.sh b/dev-support/examples/mnist-pytorch/DDP/build.sh
index 6a59a97..5edfd85 100755
--- a/dev-support/examples/mnist-pytorch/DDP/build.sh
+++ b/dev-support/examples/mnist-pytorch/DDP/build.sh
@@ -38,7 +38,7 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh b/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh
index 977c190..7370351 100755
--- a/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh
+++ b/dev-support/examples/mnist-tensorflow/MirroredStrategy/build.sh
@@ -38,7 +38,7 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh b/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh
index bd401bd..7498544 100755
--- a/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh
+++ b/dev-support/examples/mnist-tensorflow/MultiWorkerMirroredStrategy/build.sh
@@ -38,7 +38,7 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh b/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh
index c140893..a0c937a 100755
--- a/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh
+++ b/dev-support/examples/mnist-tensorflow/ParameterServerStrategy/build.sh
@@ -38,7 +38,7 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/examples/nn-pytorch/build.sh b/dev-support/examples/nn-pytorch/build.sh
index d394f44..2b08d81 100755
--- a/dev-support/examples/nn-pytorch/build.sh
+++ b/dev-support/examples/nn-pytorch/build.sh
@@ -38,7 +38,7 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/examples/quickstart/build.sh b/dev-support/examples/quickstart/build.sh
index cdf99af..23afe6c 100755
--- a/dev-support/examples/quickstart/build.sh
+++ b/dev-support/examples/quickstart/build.sh
@@ -38,7 +38,7 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/examples/tracking/build.sh b/dev-support/examples/tracking/build.sh
index 912a222..28f7e8f 100755
--- a/dev-support/examples/tracking/build.sh
+++ b/dev-support/examples/tracking/build.sh
@@ -38,7 +38,7 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .
 
 # clean temp file
 rm -rf "${CURRENT_PATH}/tmp"
diff --git a/dev-support/misc/flask/build.sh b/dev-support/misc/flask/build.sh
index 0723312..d21ab54 100755
--- a/dev-support/misc/flask/build.sh
+++ b/dev-support/misc/flask/build.sh
@@ -30,4 +30,4 @@
 # build image
 cd ${CURRENT_PATH}
 echo "Start building the ${SUBMARINE_IMAGE_NAME} docker image ..."
-docker build -t ${SUBMARINE_IMAGE_NAME} .
+docker buildx build --push --platform linux/amd64,linux/arm64 -t ${SUBMARINE_IMAGE_NAME} .