title: How to start a gRPC server in plain text mode
body: <p>I have a microservices architecture with Docker. <strong>Every microservice is both a server and a client.</strong> I'm trying to implement interactive queries on them. I'd like to communicate in plain text.</p>
  <p>Server code:</p>
  <pre><code>Server server = ServerBuilder.forPort(6666)
          .addService((BindableService) this)
          .build();
  
  server.start();
  </code></pre>
  <p>Client code:</p>
  <pre><code>    // Call the external instance
      final ManagedChannel channel = ManagedChannelBuilder
              .forAddress(hostStoreInfo.getHost(), hostStoreInfo.getPort())
              .usePlaintext()
              .build();
      final InteractiveQueryApiGrpc.InteractiveQueryApiBlockingStub stub = InteractiveQueryApiGrpc.newBlockingStub(channel);
      kafkaComplexMessage = stub.getOrder(request);
      channel.shutdown();
  </code></pre>
  <p>Every Docker container is started like this:</p>
  <pre><code>docker run -p 8080:6666 -p 7070:6666 --env SERVER_PORT=8080 --network mynetwork mymicroservice:latest
  </code></pre>
  <p>When the data isn't found in the local state store, I try to access to the correct state store remotely. However, I get this error message:</p>
  <pre><code>io.grpc.StatusRuntimeException: INTERNAL: http2 exception
  (...)
  Caused by: io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception: First received frame was not SETTINGS. Hex dump for first 5 bytes: 485454502f
  </code></pre>
  <p>Of course, each container has a different port, but I logged everything and the right IP and port is called. I have the impression that the server is running with TSL and client in plain text and I'm not sure how to downgrade the server / disable security in my case.</p>