diff --git a/.github/workflows/dubbo-2.yml b/.github/workflows/dubbo-2.yml
index d0fba63..a0bbc87 100644
--- a/.github/workflows/dubbo-2.yml
+++ b/.github/workflows/dubbo-2.yml
@@ -28,7 +28,6 @@
     spring-boot.version:2.4.1;
     '
   DUBBO_REF: 'master'
-  DUBBO_SPRING_BOOT_REF: '2.7.x'
 
 jobs:
   build-samples:
@@ -65,20 +64,16 @@
         with:
           repository: 'apache/dubbo'
           ref: ${{env.DUBBO_REF}}
-          path: dubbo
       - name: Get commit id and dubbo version
         id: git-checker
         run: |
           # Calculate Dubbo Version
-          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' dubbo/pom.xml`
+          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' pom.xml`
           echo "::set-output name=version::$REVISION"
           echo "dubbo version: $REVISION"
           #
-          #concat dubbo/dubbo-spring-boot commit id
-          cd dubbo
-          dubbo_commit_id=`git log --format="%H" -n 1`
-          cd ..
-          commit_id=$dubbo_commit_id
+          # commit id
+          commit_id=`git log --format="%H" -n 1`
           echo "::set-output name=commit_id::$commit_id"
           echo "commit_id: $commit_id"
       - name: Dubbo cache
@@ -103,7 +98,6 @@
       - name: Build dubbo
         if: steps.dubbocache.outputs.cache-hit != 'true'
         run: |
-          cd dubbo
           ./mvnw --batch-mode --no-transfer-progress  clean install -Dmaven.test.skip=true -Dmaven.test.skip.exec=true
 
   prepare_test:
diff --git a/.github/workflows/dubbo-3.yml b/.github/workflows/dubbo-3.yml
index 614a543..d80dd60 100644
--- a/.github/workflows/dubbo-3.yml
+++ b/.github/workflows/dubbo-3.yml
@@ -28,7 +28,6 @@
     spring-boot.version:2.4.1;
     '
   DUBBO_REF: '3.0'
-  DUBBO_SPRING_BOOT_REF: '3.0.x'
 
 jobs:
   build-samples:
@@ -65,20 +64,16 @@
         with:
           repository: 'apache/dubbo'
           ref: ${{env.DUBBO_REF}}
-          path: dubbo
       - name: Get commit id and dubbo version
         id: git-checker
         run: |
           # Calculate Dubbo Version
-          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' dubbo/pom.xml`
+          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' pom.xml`
           echo "::set-output name=version::$REVISION"
           echo "dubbo version: $REVISION"
           #
-          #concat dubbo/dubbo-spring-boot commit id
-          cd dubbo
-          dubbo_commit_id=`git log --format="%H" -n 1`
-          cd ..
-          commit_id=$dubbo_commit_id
+          # commit id
+          commit_id=`git log --format="%H" -n 1`
           echo "::set-output name=commit_id::$commit_id"
           echo "commit_id: $commit_id"
       - name: Dubbo cache
@@ -103,7 +98,6 @@
       - name: Build dubbo
         if: steps.dubbocache.outputs.cache-hit != 'true'
         run: |
-          cd dubbo
           ./mvnw --batch-mode --no-transfer-progress  clean install -Dmaven.test.skip=true -Dmaven.test.skip.exec=true
 
   prepare_test:
diff --git a/.github/workflows/nightly-dubbo-2.yml b/.github/workflows/nightly-dubbo-2.yml
index 9ac1075..8e87748 100644
--- a/.github/workflows/nightly-dubbo-2.yml
+++ b/.github/workflows/nightly-dubbo-2.yml
@@ -29,7 +29,6 @@
     spring-boot.version: 2.0.9.RELEASE, 2.1.18.RELEASE, 2.2.12.RELEASE, 2.3.7.RELEASE, 2.4.1
     '
   DUBBO_REF: 'master'
-  DUBBO_SPRING_BOOT_REF: '2.7.x'
 
 jobs:
   build-samples:
@@ -68,20 +67,16 @@
         with:
           repository: 'apache/dubbo'
           ref: ${{env.DUBBO_REF}}
-          path: dubbo
       - name: Get commit id and dubbo version
         id: git-checker
         run: |
           # Calculate Dubbo Version
-          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' dubbo/pom.xml`
+          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' pom.xml`
           echo "::set-output name=version::$REVISION"
           echo "dubbo version: $REVISION"
           #
-          #concat dubbo/dubbo-spring-boot commit id
-          cd dubbo
-          dubbo_commit_id=`git log --format="%H" -n 1`
-          cd ..
-          commit_id=$dubbo_commit_id
+          # commit id
+          commit_id=`git log --format="%H" -n 1`
           echo "::set-output name=commit_id::$commit_id"
           echo "commit_id: $commit_id"
       - name: Dubbo cache
@@ -106,7 +101,6 @@
       - name: Build dubbo
         if: steps.dubbocache.outputs.cache-hit != 'true'
         run: |
-          cd dubbo
           ./mvnw --batch-mode --no-transfer-progress  clean install -Dmaven.test.skip=true -Dmaven.test.skip.exec=true
 
   prepare_test:
diff --git a/.github/workflows/nightly-dubbo-3.yml b/.github/workflows/nightly-dubbo-3.yml
index 6ab06f2..6ea60df 100644
--- a/.github/workflows/nightly-dubbo-3.yml
+++ b/.github/workflows/nightly-dubbo-3.yml
@@ -28,7 +28,6 @@
     spring-boot.version: 2.0.9.RELEASE, 2.1.18.RELEASE, 2.2.12.RELEASE, 2.3.7.RELEASE, 2.4.1
     '
   DUBBO_REF: '3.0'
-  DUBBO_SPRING_BOOT_REF: '3.0.x'
 
 jobs:
   build-samples:
@@ -67,20 +66,16 @@
         with:
           repository: 'apache/dubbo'
           ref: ${{env.DUBBO_REF}}
-          path: dubbo
       - name: Get commit id and dubbo version
         id: git-checker
         run: |
           # Calculate Dubbo Version
-          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' dubbo/pom.xml`
+          REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' pom.xml`
           echo "::set-output name=version::$REVISION"
           echo "dubbo version: $REVISION"
           #
-          #concat dubbo/dubbo-spring-boot commit id
-          cd dubbo
-          dubbo_commit_id=`git log --format="%H" -n 1`
-          cd ..
-          commit_id=$dubbo_commit_id
+          # commit id
+          commit_id=`git log --format="%H" -n 1`
           echo "::set-output name=commit_id::$commit_id"
           echo "commit_id: $commit_id"
       - name: Dubbo cache
@@ -105,7 +100,6 @@
       - name: Build dubbo
         if: steps.dubbocache.outputs.cache-hit != 'true'
         run: |
-          cd dubbo
           ./mvnw --batch-mode --no-transfer-progress  clean install -Dmaven.test.skip=true -Dmaven.test.skip.exec=true
 
   prepare_test:
diff --git a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/resources/META-INF/spring/async-provider.xml b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/resources/META-INF/spring/async-provider.xml
index f49edc5..3be2523 100644
--- a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/resources/META-INF/spring/async-provider.xml
+++ b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/resources/META-INF/spring/async-provider.xml
@@ -29,7 +29,7 @@
 
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
-    <dubbo:protocol port="20880"/>
+    <dubbo:protocol name="dubbo" port="20880"/>
 
     <bean id="asyncService" class="org.apache.dubbo.samples.async.impl.AsyncServiceImpl"/>
 
diff --git a/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/spring/dubbo-demo-provider.xml b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/spring/dubbo-demo-provider.xml
index 4e9ada7..d7fbd81 100644
--- a/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/spring/dubbo-demo-provider.xml
+++ b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/spring/dubbo-demo-provider.xml
@@ -28,7 +28,7 @@
     <!-- optional provider's application name, used for tracing dependency relationship -->
     <dubbo:application name="chain-backend-app"/>
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
-    <dubbo:protocol port="20880"/>
+    <dubbo:protocol name="dubbo" port="20880"/>
 
     <dubbo:config-center address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
diff --git a/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/spring/dubbo-demo-provider.xml b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/spring/dubbo-demo-provider.xml
index 7563e55..9d0de98 100644
--- a/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/spring/dubbo-demo-provider.xml
+++ b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/spring/dubbo-demo-provider.xml
@@ -29,7 +29,7 @@
     <!-- optional provider's application name, used for tracing dependency relationship -->
     <dubbo:application name="chain-middle-app"/>
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
-    <dubbo:protocol port="20881"/>
+    <dubbo:protocol name="dubbo" port="20881"/>
 
     <dubbo:config-center address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
diff --git a/dubbo-samples-context/src/test/java/org/apache/dubbo/samples/context/ContextServiceIT.java b/dubbo-samples-context/src/test/java/org/apache/dubbo/samples/context/ContextServiceIT.java
index 6421ad9..c4690a4 100644
--- a/dubbo-samples-context/src/test/java/org/apache/dubbo/samples/context/ContextServiceIT.java
+++ b/dubbo-samples-context/src/test/java/org/apache/dubbo/samples/context/ContextServiceIT.java
@@ -27,7 +27,7 @@
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 @RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {"classpath*:/spring/dubbo-context-consumer.xml", "classpath*:/spring/dubbo-context-provider.xml"})
+@ContextConfiguration(locations = {"classpath*:/spring/dubbo-context-consumer.xml"})
 public class ContextServiceIT {
 
     @Autowired
diff --git a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml
index fdea9ca..1f9a890 100644
--- a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml
+++ b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml
@@ -28,7 +28,7 @@
     <dubbo:application name="governance-appoverride-provider"/>
 
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
-    <dubbo:protocol port="${dubbo.port:20880}"/>
+    <dubbo:protocol name="dubbo" port="${dubbo.port:20880}"/>
 
     <bean id="demoService" class="org.apache.dubbo.samples.governance.impl.DemoServiceImpl"/>
     <dubbo:service interface="org.apache.dubbo.samples.governance.api.DemoService" ref="demoService"/>
diff --git a/dubbo-samples-governance/dubbo-samples-configconditionrouter/src/main/resources/spring/dubbo-demo-provider.xml b/dubbo-samples-governance/dubbo-samples-configconditionrouter/src/main/resources/spring/dubbo-demo-provider.xml
index fed3425..a4ac995 100644
--- a/dubbo-samples-governance/dubbo-samples-configconditionrouter/src/main/resources/spring/dubbo-demo-provider.xml
+++ b/dubbo-samples-governance/dubbo-samples-configconditionrouter/src/main/resources/spring/dubbo-demo-provider.xml
@@ -29,7 +29,7 @@
 
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
-    <dubbo:protocol port="${dubbo.port:-1}"/>
+    <dubbo:protocol name="dubbo" port="${dubbo.port:-1}"/>
 
     <dubbo:config-center highest-priority="false" address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
diff --git a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/MetadataConfigcenterProvider.java b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/MetadataConfigcenterProvider.java
index 2c918ab..b9e5783 100644
--- a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/MetadataConfigcenterProvider.java
+++ b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/MetadataConfigcenterProvider.java
@@ -20,6 +20,7 @@
 package org.apache.dubbo.samples.metadatareport.configcenter;
 
 
+import org.apache.dubbo.common.Version;
 import org.apache.dubbo.common.constants.CommonConstants;
 import org.apache.dubbo.config.ProviderConfig;
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
@@ -32,19 +33,25 @@
 
 import java.util.concurrent.CountDownLatch;
 
+import static org.apache.dubbo.samples.metadatareport.configcenter.ZKTools.VERSION300;
+
 public class MetadataConfigcenterProvider {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
-        ZKTools.generateDubboProperties();
 
-        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class);
-        context.start();
+        try {
+            ZKTools.generateDubboProperties();
+            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class);
+            context.start();
 
-        printServiceData();
+            printServiceData();
 
-        System.out.println("dubbo service started");
-        new CountDownLatch(1).await();
+            System.out.println("dubbo service started");
+            new CountDownLatch(1).await();
+        } finally {
+            ZKTools.removeDubboProperties();
+        }
     }
 
     @Configuration
@@ -54,7 +61,14 @@
         @Bean
         public ProviderConfig providerConfig() {
             ProviderConfig providerConfig = new ProviderConfig();
-            providerConfig.setId("id"); //FIXME, spring bean id 'providerConfig' should not be used as dubbo id.
+            // compatible with dubbo 2.7.x
+            if (Version.getIntVersion(Version.getVersion()) < VERSION300) {
+                // avoid using spring bean id 'providerConfig' as dubbo config id.
+                providerConfig.setId("my-provider");
+            } else {
+                //TODO remove the following line after merging dubbo 3.0 config refactor pr
+                providerConfig.setId("my-provider");
+            }
             providerConfig.setTimeout(1000);
             return providerConfig;
         }
diff --git a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/ZKTools.java b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/ZKTools.java
index a8be01e..0134f60 100644
--- a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/ZKTools.java
+++ b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/ZKTools.java
@@ -16,6 +16,7 @@
  */
 package org.apache.dubbo.samples.metadatareport.configcenter;
 
+import org.apache.dubbo.common.Version;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;
 import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;
@@ -27,15 +28,21 @@
 import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;
 
 public class ZKTools {
+    public static final String GLOBAL_DUBBO_PROPERTIES_PATH = "/dubbo/config/dubbo/dubbo.properties";
+    public static final String CONSUMER_DUBBO_PROPERTIES_PATH = "/dubbo/config/metadatareport-configcenter-consumer/dubbo.properties";
+    public static final String PROVIDER_DUBBO_PROPERTIES_PATH = "/dubbo/config/metadatareport-configcenter-provider/dubbo.properties";
     private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1");
     private static CuratorFramework client;
 
+    public static final int VERSION300 = Version.getIntVersion("3.0.0");
+
     static {
         initClient();
     }
 
     public static void main(String[] args) throws Exception {
         generateDubboProperties();
+        removeDubboProperties();
     }
 
     public static void generateDubboProperties() {
@@ -56,13 +63,22 @@
                 "#global config for consumer\n" +
                 "dubbo.consumer.timeout=6000\n" +
                 "#global config for provider\n" +
-                "dubbo.protocol.port=20831\n" +
-                "dubbo.provider.id.timeout=5000";
+                "dubbo.protocol.port=20831\n";
+
+        if (Version.getIntVersion(Version.getVersion()) >= VERSION300) {
+            // dubbo 3.x
+            str += "dubbo.provider.timeout=5000\n";
+            // TODO compatible with 3.0 preview and dev branch, remove the following line after merging dubbo 3.0 config refactor pr
+            str += "dubbo.provider.my-provider.timeout=5000";
+        } else {
+            // compatible with dubbo 2.7.x
+            str += "dubbo.provider.my-provider.timeout=5000";
+        }
 
         System.out.println(str);
 
         try {
-            String path = "/dubbo/config/dubbo/dubbo.properties";
+            String path = GLOBAL_DUBBO_PROPERTIES_PATH;
             if (client.checkExists().forPath(path) == null) {
                 client.create().creatingParentsIfNeeded().forPath(path);
             }
@@ -78,7 +94,7 @@
         System.out.println(str);
 
         try {
-            String path = "/dubbo/config/metadatareport-configcenter-consumer/dubbo.properties";
+            String path = CONSUMER_DUBBO_PROPERTIES_PATH;
             if (client.checkExists().forPath(path) == null) {
                 client.create().creatingParentsIfNeeded().forPath(path);
             }
@@ -95,7 +111,7 @@
         System.out.println(str);
 
         try {
-            String path = "/dubbo/config/metadatareport-configcenter-provider/dubbo.properties";
+            String path = PROVIDER_DUBBO_PROPERTIES_PATH;
             if (client.checkExists().forPath(path) == null) {
                 client.create().creatingParentsIfNeeded().forPath(path);
             }
@@ -141,12 +157,20 @@
         return root + PATH_SEPARATOR;
     }
 
-    private static void removeGlobalConfig() {
+    public static void removeDubboProperties() {
         try {
-            client.delete().forPath("/dubbo/config/dubbo/dubbo.properties");
+            client.delete().forPath(GLOBAL_DUBBO_PROPERTIES_PATH);
+            client.delete().forPath(PROVIDER_DUBBO_PROPERTIES_PATH);
+            client.delete().forPath(CONSUMER_DUBBO_PROPERTIES_PATH);
+            client.delete().forPath(getParent(PROVIDER_DUBBO_PROPERTIES_PATH));
+            client.delete().forPath(getParent(CONSUMER_DUBBO_PROPERTIES_PATH));
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
+    private static String getParent(String path) {
+        return path.substring(0, PROVIDER_DUBBO_PROPERTIES_PATH.lastIndexOf('/'));
+    }
+
 }
diff --git a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-properties/src/test/java/org/apache/dubbo/samples/metadatareport/local/properties/MetadataIT.java b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-properties/src/test/java/org/apache/dubbo/samples/metadatareport/local/properties/MetadataIT.java
index 42f5c93..2253f58 100644
--- a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-properties/src/test/java/org/apache/dubbo/samples/metadatareport/local/properties/MetadataIT.java
+++ b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-properties/src/test/java/org/apache/dubbo/samples/metadatareport/local/properties/MetadataIT.java
@@ -24,6 +24,7 @@
 
 import com.google.gson.Gson;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +37,12 @@
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(locations = {"classpath:/spring/metadata-consumer.xml"})
 public class MetadataIT {
+
+    @BeforeClass
+    public static void beforeClass() {
+        //new EmbeddedZooKeeper(2181, false).start();
+    }
+
     @Autowired
     private DemoService demoService;
 
diff --git a/dubbo-samples-nacos/dubbo-samples-nacos-override/src/test/java/org/apache/dubbo/samples/governance/DemoServiceIT.java b/dubbo-samples-nacos/dubbo-samples-nacos-override/src/test/java/org/apache/dubbo/samples/governance/DemoServiceIT.java
index bc9b435..c287968 100644
--- a/dubbo-samples-nacos/dubbo-samples-nacos-override/src/test/java/org/apache/dubbo/samples/governance/DemoServiceIT.java
+++ b/dubbo-samples-nacos/dubbo-samples-nacos-override/src/test/java/org/apache/dubbo/samples/governance/DemoServiceIT.java
@@ -21,11 +21,17 @@
 import org.apache.dubbo.samples.governance.api.DemoService;
 import org.apache.dubbo.samples.governance.util.NacosUtils;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Test;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class DemoServiceIT {
 
+    @Before
+    public void beforeTest() {
+        //DubboBootstrap.reset();
+    }
+
     @Test(expected = RpcException.class)
     public void testWithoutRule() throws Throwable {
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring/dubbo-demo-consumer.xml");
diff --git a/dubbo-samples-nacos/dubbo-samples-nacos-override/src/test/resources/docker/docker-compose.yml b/dubbo-samples-nacos/dubbo-samples-nacos-override/src/test/resources/docker/docker-compose.yml
new file mode 100644
index 0000000..1f18759
--- /dev/null
+++ b/dubbo-samples-nacos/dubbo-samples-nacos-override/src/test/resources/docker/docker-compose.yml
@@ -0,0 +1,14 @@
+version: '2.4'
+
+services:
+  nacos:
+    image: nacos/nacos-server:2.0.0
+    hostname: nacos
+    environment:
+      - PREFER_HOST_MODE=hostname
+      - MODE=standalone
+      - JVM_XMS=350m
+      - JVM_XMX=350m
+      - JVM_XMN=150m
+    ports:
+    - 8848:8848
diff --git a/dubbo-samples-protobuf-json/protobuf-json-serialization-demo/src/main/resources/spring/provider.xml b/dubbo-samples-protobuf-json/protobuf-json-serialization-demo/src/main/resources/spring/provider.xml
index 046e7d0..188b7f4 100644
--- a/dubbo-samples-protobuf-json/protobuf-json-serialization-demo/src/main/resources/spring/provider.xml
+++ b/dubbo-samples-protobuf-json/protobuf-json-serialization-demo/src/main/resources/spring/provider.xml
@@ -30,7 +30,7 @@
     <dubbo:metadata-report address="zookeeper://${zookeeper.address:127.0.0.1}:2181" cycle-report="false"
                            retry-period="4590" sync-report="true" retry-times="23"/>
 
-    <dubbo:protocol serialization="x-protobuf"/>
+    <dubbo:protocol name="dubbo" serialization="x-protobuf"/>
     <bean id="demoService" class="org.apache.dubbo.sample.protobuf.provider.GoogleProtobufServiceImpl"/>
     <dubbo:service interface="org.apache.dubbo.sample.protobuf.GoogleProtobufService" ref="demoService"/>
 
diff --git a/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-properties/src/main/java/org/apache/dubbo/samples/simplified/registry/properties/SimpleRegistryPropertiesProvider.java b/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-properties/src/main/java/org/apache/dubbo/samples/simplified/registry/properties/SimpleRegistryPropertiesProvider.java
index 27a096e..fdd73c4 100644
--- a/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-properties/src/main/java/org/apache/dubbo/samples/simplified/registry/properties/SimpleRegistryPropertiesProvider.java
+++ b/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-properties/src/main/java/org/apache/dubbo/samples/simplified/registry/properties/SimpleRegistryPropertiesProvider.java
@@ -33,9 +33,14 @@
  */
 public class SimpleRegistryPropertiesProvider {
 
+    private static final String ZOOKEEPER_ADDRESS = "zookeeper.address";
+    private static final String ZOOKEEPER_PORT = "zookeeper.port";
+
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
 
+        initProperties();
+
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/simplified-provider.xml");
         context.start();
 
@@ -45,6 +50,15 @@
         new CountDownLatch(1).await();
     }
 
+    private static void initProperties() {
+        if (System.getProperty(ZOOKEEPER_ADDRESS) == null) {
+            System.setProperty(ZOOKEEPER_ADDRESS, "127.0.0.1");
+        }
+        if (System.getProperty(ZOOKEEPER_PORT) == null) {
+            System.setProperty(ZOOKEEPER_PORT, "2181");
+        }
+    }
+
     private static void printServiceData() {
         List<String> urls = ZkUtil.getChildren(ZkUtil.toUrlPath("providers"));
         System.out.println("*********************************************************");
