【问题标题】:What should a dockerfile contain to run a simple CRUD web application?dockerfile 应该包含什么来运行一个简单的 CRUD Web 应用程序?
【发布时间】:2017-01-05 22:46:14
【问题描述】:
我正在研究 Docker,为了更好地理解,我想用它来运行我不久前创建的 Java Web 应用程序。它在后端使用 Java、Spring、Hibernate,在前端使用 Spring MVC,并使用 MySQL 作为数据库。在 Eclipse 中,它可以很容易地在 Tomcat 上运行并在浏览器中打开。本质上,它是一个简单的 CRUD 应用程序。
为了创建一个 dockerfile 来运行它,我需要从 (FROM) 一个操作系统映像开始吗?如何包含 Java、MySQL 和 Tomcat 实例?如何配置它以运行应用程序战争?
【问题讨论】:
标签:
java
mysql
tomcat
docker
dockerfile
【解决方案1】:
标准的 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
Dockerfile
如果您从现有映像启动 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