极客时间运维进阶训练营第三周作业
基于 docker-compose 实现对 Nginx+Tomcat Web 服务的单机编排
在当前目录创建 docker-compose.yml 文件,并写入如下的内容:
复制代码
执行如下命令启动服务
复制代码
由于 nginx 的镜像中没有配置到 tomcat 的转发(正常需要配置到镜像中),所以需要做如下的操作
复制代码
浏览器通过 http://xxxxx/myapp 进行访问
本文字数:1339 字
阅读完需:约 4 分钟
在当前目录创建 docker-compose.yml 文件,并写入如下的内容:
version: '3.8' # docker-compose文件格式版本
services: # 定义该compose下的服务(注意compose中的管理都是以service为单位,各个服务之间的相互访问也是通过service,类似一个域名)
nginx-server: # 定义一个叫nginx-service的服务
image: nginx:1.22.0-alpine
# container_name: nginx-web1 # 定义容器的名称,尽量不要使用
# network_mode: bridge #网络1,使用docker安装后的默认网桥
expose:
- 80
- 443
ports:
- "80:80"
- "443:443"
networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有两块网卡
- front
- backend
links: # 依赖于tomcat-server服务,即需要等tomcat-server服务启动后自己的服务才会启动
- tomcat-server
tomcat-server:
#image: tomcat:7.0.93-alpine
image: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1
container_name: tomcat-app1 # 注意该容器中有代码会去连mysql数据库(在/data/tomcat/webapps/myapp/index.jsp文件中)
##network_mode: bridge #网络1,使用docker安装后的默认网桥
#expose:
# - 8080
#ports:
# - "8080:8080"
networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
- backend
links:
- mysql-server
mysql-server:
image: mysql:5.6.48
container_name: mysql-container
# network_mode: bridge #网络1,使用docker安装后的默认网桥
volumes: # 通过挂载卷的方式将mysql数据持久化
- /data/mysql:/var/lib/mysql
#- /etc/mysql/conf/my.cnf:/etc/my.cnf:ro
environment:
- "MYSQL_ROOT_PASSWORD=12345678"
- "TZ=Asia/Shanghai"
expose:
- 3306
ports:
- "3306:3306"
networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
- backend
networks: # 网路相关配置
front: #自定义前端服务网络,需要docker-compose创建
driver: bridge
backend: #自定义后端服务的网络,要docker-compose创建
driver: bridge
default: #使用已经存在的docker0默认172.17.0.1/16的网络
external:
name: bridge
执行如下命令启动服务
docker-compose up -d
由于 nginx 的镜像中没有配置到 tomcat 的转发(正常需要配置到镜像中),所以需要做如下的操作
# 进入nginx容器,修改/etc/nginx/conf.d/default.conf,添加如下的转发配置
location /myapp {
proxy_pass http://tomcat-server:8080;
}
# 执行如下命令reload
nginx -s reload
浏览器通过 http://xxxxx/myapp 进行访问
还未添加个人签名 2018-08-24 加入
还未添加个人简介
促进软件开发及相关领域知识与创新的传播
评论