用Jetty和Cassandra创builddocker集装箱

在Cent OS上使用这里提到的步骤安装docker

到目前为止,我可以按照Jetty和Cassandra提到的步骤独立运行docker和卡桑德拉的docker图像


我想创build一个Docker容器,它将有Cassandra database和一个在Jetty server上运行的Web应用程序,它与这个数据库交互。

我可以使用Jetty创builddocker容器,并能够使用以下Dockerfile内容在jetty中运行一些示例Web应用程序

 FROM jetty RUN mkdir /var/lib/jetty/webapps/test-app COPY index.html /var/lib/jetty/webapps/test-app/ 

一旦我将这个文件保存为Dockerfile,我发出以下命令来创buildDocker镜像并运行相同的命令

 docker build -t test-docker . docker run -d -p 8443:8080 test-docker 

现在我可以在浏览器中看到这个应用程序的结果

<ip_address>:8443/test-app/index.html

题:

我应该如何将Cassandra数据库集成到这个Docker镜像中,并运行打包成一个整体的Jetty + Cassandra + Web Application

正如在Docker Cassandra文档中提到的,而不是运行cassandra

 docker run --name some-cassandra -d cassandra:tag 

提到cassandra使用的所有端口,以便可以像下面那样从外部资源传递或交互

 docker run --name some-cassandra -d -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 cassandra:tag 

现在,在Jetty Container中运行的Web应用程序可以使用Java Driver访问Cassandra数据库。

注意:如果您使用Cassandra版本> 3.0,那么您应该使用版本> = 3.0 cassandra-driver-core

Maven依赖于cassandra-driver-core

 <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>3.0.0</version> </dependency> 

cassandra-driver-mapping

 <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-mapping</artifactId> <version>3.0.0</version> </dependency> 

你可以使用Cassandra官方Docker Image来启动cassandra数据库。 开始你的Web应用程序在一个单独的容器,因为你现在正在做。

您可以将cassandra容器与您的Web应用程序容器链接起来

 docker run --name webapp --link cassandra:cassandra -d test-docker 

您需要在Web应用程序中使用cassandra主机名/容器IP。 您可以将cassandra DB_URL作为环境variables传递。

 docker run --name webapp --link cassandra:cassandra -e DB_URL='cassandra:7000' -d test-docker 

了解更多关于Docker容器的链接