将Lagom Framework部署为独立的jar / docker

时间:2019-01-25 17:45:07

标签: scala docker lagom

是否可以将Lagom应用程序部署为独立运行的jar或Docker容器? 如果是的话,怎么办?

1 个答案:

答案 0 :(得分:0)

是的,可以将Lagom应用程序部署为独立的JAR / Docker容器。为此,您可以按照以下步骤操作。

  1. 配置Cassandra联系点:如果您打算为服务使用动态服务位置,但需要静态定位Cassandra(在生产环境中很明显),那么请修改您的application.conf服务。另外,禁用Lagom的ConfigSessionProvider,然后退回到akka-persistence-cassandra中提供的位置,该位置使用联系点中列出的端点列表。您的Cassandra配置应如下所示-
cassandra.default {
## list the contact points here
contact-points = ["127.0.0.1"]
## override Lagom’s ServiceLocator-based ConfigSessionProvider
session-provider = akka.persistence.cassandra.ConfigSessionProvider
}
cassandra-journal {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
cassandra-snapshot-store {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
lagom.persistence.read-side.cassandra {
contact-points = ${cassandra.default.contact-points}
session-provider = ${cassandra.default.session-provider}
}
  1. 提供Kafka经纪人设置(如果您使用的是Kafka Message Broker):如果打算使用Lagom的流媒体服务,则下一步是提供Kafka经纪人设置。为此,如果要静态定位Kafka服务,则需要修改服务的application.conf,在这种情况下,您的服务只能像使用者一样工作,否则,不需要进行以下配置。
lagom.broker.kafka {
  service-name = ""
  brokers = "127.0.0.1:9092"
  client {
    default {
      failure-exponential-backoff {
        min = 3s
        max = 30s
        random-factor = 0.2
      }
    }
    producer = ${lagom.broker.kafka.client.default}
    producer.role = ""
    consumer {
      failure-exponential-backoff = ${lagom.broker.kafka.client.default.failure-exponential-backoff}
      offset-buffer = 100
      batching-size = 20
      batching-interval = 5 seconds
    }
  }
}
  1. 创建Akka群集:最后,我们需要自己创建一个Akka群集。由于我们不使用ConductR,因此需要自己实施联接。这可以通过在application.conf中添加以下几行来完成。
akka.cluster.seed-nodes = [
  "akka.tcp://MyService@host1:2552",
  "akka.tcp://MyService@host2:2552"]

现在,我们知道需要为服务提供哪些配置,让我们看一下部署步骤。由于我们仅使用java -cp命令,因此我们需要打包服务并运行它。为了简化该过程,我们为其创建了一个shell脚本。

有关完整示例,请参阅我们的GitHub存储库-Lagom Scala SBT Standalone project

希望对您有帮助!