多容器APP之Compose学习笔记(二)
2018-03-19 16:52
369 查看
前言
已经不能称之为学习笔记了,因为官方文档实在是枯燥,于是我就直接对着某个实例上了。本次我搭建了一个可以复用的环境,Mysql+Tomcat+Nginx可能这样搭配有点不合理,或许,毕竟对这方面了解的不多,不过搭建出来确实能用。而且能够复用,你只需要将你的JavaWeb工程打包成War文件放到Tomcat的webapps目录下就行了。
Compose服务配置
这个环境中需要三层服务,一是数据库层,二是app层,三是nginx用作代理层。因为是比较小的项目所以没有做反向代理的配置,但是此环境可用于扩展,将Tomcat部署到不同的模拟服务器下,并用nginx反向代理。这是可扩展的。下面是我的目录结构:env_template │ │ docker-compose.yml │ └───lostfound │ │ │ │ Dockerfile │ └───nginx │ │ nginx.conf │ Dockerfile
服务配置使用默认名为docker-compose.yml的配置文件来配置的。下面是我的配置文件
version: '2' networks: lostfound: services: lostfound: build: lostfound networks: - lostfound volumes: - $PWD/lostfound/webapps:/usr/local/tomcat/webapps depends_on: - db ports: - "8080:8080" nginx: build: nginx networks: - lostfound depends_on: - lostfound ports: - "80:80" db: image: "mysql:5.7.15" networks: - lostfound environment: MYSQL_ROOT_PASSWORD: root MYSQL_USER: lostfound MYSQL_PASSWORD: ****** volumes: - $PWD/data:/var/lib/mysql ports: - "3306:3306"
简单说一下,三层服务配置。三项服务在同一个网络
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文件:
FROM tomcat EXPOSE 8080
Nginx 构建
这个也是pull一个镜像,然后将代理设置一下。
Dockerfile
FROM nginx COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80
nginx.conf
worker_processes 4; events {worker_connections 1024;} http { server { listen 80; location / { proxy_pass http://lostfound:8080; } } }
将tomcat运行的webapp代理到nginx。
其他
运行此环境需要你安装以下工具:- Docker
- Docker-Compose
运行
docker-compose up
打开浏览器,地址栏内输入
localhost/yourappname
Github地址
https://github.com/ScarboroughCoral/SE_Docker相关文章推荐
- 多容器APP之Compose学习笔记(一)
- Docker学习笔记4: Docker-Compose—简化复杂容器应用的利器
- Docker学习笔记4: Docker-Compose—简化复杂容器应用的利器
- 手写app学习笔记(一)
- 其他容器学习笔记
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:顺序容器的定义
- c++ Primer 学习笔记 第九章----顺序容器
- Spring学习笔记之IoC容器
- spring ioc容器的学习笔记3---BeanFactory
- 【Spring学习笔记-3.1】让bean获取spring容器上下文(applicationContext.xml)
- nginx 源码学习笔记(十二)——基本容器——ngx_buf
- 神奇的服务容器 -IoC 容器 (Laravel 学习笔记)
- ApiDemos学习笔记---app---activity
- iOS学习笔记4-xcode构建iOS app时为什么分version和build两个版本号
- 单个angular页面如何加载多个ng-app应用---------------------学习笔记
- GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件
- 学习笔记:App-V测试应用程序发布问题
- 【学习笔记】《STL使用入门教程》第四讲:容器set、函数对象functor与对组pair
- C++ Primer Plus学习笔记之STL容器
- Framework7学习笔记之初始化App