多容器APP之Compose学习笔记(二)
人类善用工具,是因为懒。
前言
已经不能称之为学习笔记了,因为官方文档实在是枯燥,于是我就直接对着某个实例上了。本次我搭建了一个可以复用的环境,Mysql+Tomcat+Nginx
可能这样搭配有点不合理,或许,毕竟对这方面了解的不多,不过搭建出来确实能用。而且能够复用,你只需要将你的JavaWeb工程打包成War文件放到Tomcat的webapps目录下就行了。
Compose服务配置
这个环境中需要三层服务,一是数据库层,二是app层,三是nginx用作代理层。因为是比较小的项目所以没有做反向代理的配置,但是此环境可用于扩展,将Tomcat部署到不同的模拟服务器下,并用nginx反向代理。这是可扩展的。下面是我的目录结构:
1 | env_template |
服务配置使用默认名为docker-compose.yml的配置文件来配置的。下面是我的配置文件
1 | version: '2' |
简单说一下,三层服务配置。三项服务在同一个网络lostfound
内,lostfound层就是app层,是从工程目录下的lostfound文件夹构建的,里面就是tomcat,端口映射8080。为了容易部署我的web应用程序,我将lostfound层的tomcat/webapps
挂载到本地。然后app层依赖于数据库层,等待数据库层构建运行,数据库层应用了Mysql5.7里面有一些环境的配置,另外为了使得数据持久化,我将容器中的保存数据的文件夹也挂载到本地,端口映射为3306,如果你的3306端口被占用,时会报错的,你需要停止你的3306端口的应用程序,一般来说是Mysql服务。使用sudo service mysql stop
来结束本地的mysql服务。然后是nginx服务,这层服务对于这种小工程来说不是必需的,但是为了可扩展我就加上了。端口映射为默认端口80。
Tomcat 构建
这个比较简单,就是pull
一个镜像,并暴露端口8080。这是其Dockerfile文件:
1 | FROM tomcat |
Nginx 构建
这个也是pull
一个镜像,然后将代理设置一下。
- Dockerfile
1
2
3FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80 - nginx.conf
1
2
3
4
5
6
7
8
9
10worker_processes 4;
events {worker_connections 1024;}
http {
server {
listen 80;
location / {
proxy_pass http://lostfound:8080;
}
}
}
将tomcat运行的webapp代理到nginx。
其他
运行此环境需要你安装以下工具:
- Docker
- Docker-Compose
运行
1 | docker-compose up |
打开浏览器,地址栏内输入
localhost/yourappname