使用 Jetty 和 Cassandra 创建 docker 个容器
Creating docker container with Jetty and Cassandra
使用提到的步骤 here
在 Cent OS 上安装 docker
到目前为止,我可以按照上述步骤 运行 docker jetty 和 cassandra 的独立图像 Jetty & Cassandra
我想创建一个 docker 容器,它将有 Cassandra database
和一个 Web 应用程序 运行ning 在 Jetty server
中与该数据库交互。
我能够使用 Jetty 创建 docker 容器,并且能够 运行 使用以下 Dockerfile
内容
在 Jetty 中使用一些示例 Web 应用程序
FROM jetty
RUN mkdir /var/lib/jetty/webapps/test-app
COPY index.html /var/lib/jetty/webapps/test-app/
一旦我将此文件保存为 Dockerfile,我将发出以下命令来创建 docker 图像和 运行 相同的
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
打包成一个组集成?
您可以使用Cassandra Official Docker Image来启动cassandra数据库。像现在一样在单独的容器中启动您的 Web 应用程序。
您可以 link cassandra 容器与您的 Web 应用程序容器
docker run --name webapp --link cassandra:cassandra -d test-docker
您需要在 web 应用程序中使用 cassandra hostname/container IP。您可以将 cassandra DB_URL 作为环境变量传递。
docker run --name webapp --link cassandra:cassandra -e DB_URL='cassandra:7000' -d test-docker
阅读更多关于 Docker container Linking
如Docker Cassandra Documentation中所述,用
代替运行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 容器中的 Web 应用程序 运行 可以使用 Java 驱动程序访问 Cassandra 数据库。
注意: 如果您使用的 Cassandra 版本 > 3.0,那么您应该使用 cassandra-driver-core
的版本 >= 3.0
cassandra-driver-core
的 Maven 依赖项
<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>
使用提到的步骤 here
在 Cent OS 上安装 docker到目前为止,我可以按照上述步骤 运行 docker jetty 和 cassandra 的独立图像 Jetty & Cassandra
我想创建一个 docker 容器,它将有 Cassandra database
和一个 Web 应用程序 运行ning 在 Jetty server
中与该数据库交互。
我能够使用 Jetty 创建 docker 容器,并且能够 运行 使用以下 Dockerfile
内容
FROM jetty
RUN mkdir /var/lib/jetty/webapps/test-app
COPY index.html /var/lib/jetty/webapps/test-app/
一旦我将此文件保存为 Dockerfile,我将发出以下命令来创建 docker 图像和 运行 相同的
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
打包成一个组集成?
您可以使用Cassandra Official Docker Image来启动cassandra数据库。像现在一样在单独的容器中启动您的 Web 应用程序。
您可以 link cassandra 容器与您的 Web 应用程序容器
docker run --name webapp --link cassandra:cassandra -d test-docker
您需要在 web 应用程序中使用 cassandra hostname/container IP。您可以将 cassandra DB_URL 作为环境变量传递。
docker run --name webapp --link cassandra:cassandra -e DB_URL='cassandra:7000' -d test-docker
阅读更多关于 Docker container Linking
如Docker Cassandra Documentation中所述,用
代替运行cassandradocker 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 容器中的 Web 应用程序 运行 可以使用 Java 驱动程序访问 Cassandra 数据库。
注意: 如果您使用的 Cassandra 版本 > 3.0,那么您应该使用 cassandra-driver-core
的版本 >= 3.0
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>