java - dockerfile 应该包含什么来运行一个简单的 CRUD Web 应用程序?

标签 java mysql tomcat docker dockerfile

我正在研究 Docker,为了更好地理解,我想用它来运行我刚才创建的 Java Web 应用程序。后端使用Java、Spring、Hibernate,前端使用Spring MVC,数据库使用MySQL。在Eclipse中,可以方便的在Tomcat上运行,在浏览器中打开。本质上,它是一个简单的 CRUD 应用程序。

为了创建一个 dockerfile 来运行它,我是否需要从 (FROM) 操作系统镜像开始?如何包含 Java、MySQL 和 Tomcat 实例?我如何配置它来运行应用程序 war ?

最佳答案

标准的 Docker 风格是每个容器有一个服务,然后有一个编排工具将容器作为一个组来管理。

Docker 附带一个名为 Docker Compose 的工具使用 docker-compose.yml 文件配置。

version: '2'

services:
  myapp_web:
    build: ./web/
    ports:
     - "8080:8080"
    networks:
     - myapp_net

  myapp_db:
    build: ./db/
    volumes:
     - myapp_data:/var/lib/mysql
    networks:
     - myapp_net

volumes:
  myapp_data:

networks:
  myapp_net:
    driver: bridge

Docker文件

如果您从现有图像启动 Dockerfile 将是最简单的,这样您就不必处理完整的构建。最流行的开源软件将在 Docker Hub 上提供图像.搜索“docker”通常是最重要的结果。查看您使用的图像中的 Dockerfile。官方图像倾向于使用所有当前的最佳实践。

mysql image为您提供带有一些自定义配置选项的空白 mysql 安装。您最初可能不需要这里的 Dockerfile

./db/Dockerfile

FROM mysql:5.7
RUN some-setup.sh

tomcat image提供有效的 OpenJDK 和 Tomcat 安装,供您部署应用。

./web/Dockerfile

FROM 8.0-jre8-alpine
COPY myapp.war /usr/local/tomcat/webapps/myapp.war

关于java - dockerfile 应该包含什么来运行一个简单的 CRUD Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39214111/

相关文章:

java - 在 spring web 应用程序中创建数据源的正确方法是什么?

java - 在文件内排序

Java:如何检测(和更改?)System.console 的编码?

java - 我应该如何提供压缩网页?

mysql - 子查询销售和库存

mysql - 我怎样才能选择性地加入

java - 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

java - 检测手指何时离开屏幕并更新指针

java - 如何在 hibernate 中以特定顺序创建表列?

php - 如何将动态生成的表单不同字段值存储回数据库php mysql?