本篇讲述用tomcat、nginx和maridb镜像来构建最基础的web服务,编写docker-compose文件用以启动服务。
镜像下载
web部署需要tomcat、nginx和maridb,下载这三个软件的最新镜像如下:
为了使用方便,我将所有的镜像都push到了本地仓库,并把nginx重新打了一个new的tag标签(因为本地已经有一个低版本的nginx,并做了镜像改动,区分一下)。
web部署所需文件准备
web部署前需要准备服务所需的基本数据库配置、前端静态页面文件和后端war包。为了容器内外时间一致,同时准备时间信息文件,用以挂载到容器内部。
我们将需要的文件统一放到web目录中,web的整个目录结构如下:
image文件夹用于存放web交互过程上传下载的图片文件,mysql_db用于持久化maridb数据文件存放(初始化时存放最近本的数据库配置及表结构),war目录用来存放tomcat提供后端服务所需的war包,web_page文件用来存放nginx代理静态页面所需的前端工程文件。
编写docker-compose文件
编写的用以发布web服务的docker-compose.yml文件如下:
services:
mysql:
image: 127.0.0.1:25000/mariadb:latest
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- /mnt/web/mysql_db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
networks:
- sdknet
tomcat:
image: 127.0.0.1:25000/tomcat:latest
restart: always
volumes:
- /mnt/web/war:/usr/local/tomcat/webapps
- /mnt/web/logs:/usr/local/tomcat/logs
- /etc/localtime:/etc/localtime:ro
- /mnt/web/war/timezone:/etc/timezone
- /mnt/web/image:/image
networks:
- sdknet
ports:
- 8089:8080
nginx:
image: 127.0.0.1:25000/nginx:new
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- /mnt/web/web_page:/etc/nginx/html
- /mnt/web/war/default.conf:/etc/nginx/nginx.conf
- /mnt/web/image:/image
networks:
- sdknet
ports:
- 8000:80
networks:
sdknet:
external: true
因为三个容器之间需要通过网络相互访问,所以在compose文件中添加名为sdknet的network打通容器网络。
启动web容器服务
docker network create --driver=overlay --attachable sdknet
docker-compose up
请求页面验证
访问web页面打开系统首页如下,说明我们的服务已经成功启动!
本篇内容在本人个人公众号上也已发布,欢迎关注本人微信公众号“勤菜鸟”。