文章目录
- Docker Compose 服务编排
- 一、安装 Docker Compose
- 二、卸载 Docker Compose
- 三、编排 Nginx + Springboot 项目
- 3.1 docker-compose.yml
- 3.2 nginx.conf
- 3.3 启动服务
- 3.4 解决报错
提示:以下是本篇文章正文内容,Docker 系列学习将会持续更新
Docker Compose 服务编排
Docker Compose 是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动和停止。
使用步骤:
- 利用 Dockerfile 定义运行环境镜像
- 使用
docker-compose.yml
定义组成应用的各服务 - 运行
docker-compose up
启动应用
一、安装 Docker Compose
①Compose 目前已经完全支持 Linux、Mac OS 和 Windows,下面我们以编译好的二进制包方式安装在 Linux 系统中:
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
②设置文件可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
③查看版本信息:
docker-compose -version
二、卸载 Docker Compose
如果出现以下报错,就可以删了 compose,重新下载一个版本:
# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
回到目录…
三、编排 Nginx + Springboot 项目
3.1 docker-compose.yml
①创建 docker-compose
目录
mkdir ~/docker-compose
cd ~/docker-compose
②编写 docker-compose.yml
文件
version: '3' #docker版本,目前一般是3
services:
nginx:
image: nginx:latest
ports:
- 80:80 #容器的80端口映射到宿主机的80端口
volumes:
- ./nginx/conf/nginx.conf:/etc/nginx/conf.d/default.conf
networks:
- wsy_net
app: #SpringBoot服务名,需要在nginx.conf配置文件中将nginx跳转后端的ip配置成app
image: app:1.0
expose:
- 8080 #暴露端口8080
networks:
- wsy_net
networks: #自定义网络
wsy_net:
name: wangshaoyu
回到目录…
3.2 nginx.conf
①创建 ./nginx/conf
目录
mkdir -p ./nginx/conf
②在 ./nginx/conf
目录下 编写 nginx.conf
文件
server {
listen 80;
server_name localhost;
access_log off;
location / {
proxy_pass http://app:8080; #这里ip一定要和compose服务名一样
proxy_set_header Host $host; #后台工程会根据这个host判断请求是从哪里发来的
proxy_set_header X-Real-IP $remote_addr; #防止后台工程以为nginx是攻击者,导致封了nginx的请求
proxy_http_version 1.1; #nginx默认是http1.0访,但后端要求支持HTTP1.1
proxy_set_header Connection ""; #这个也必须配
}
}
回到目录…
3.3 启动服务
①在 ~/docker-compose
目录下,使用 docker-compose 启动容器
docker-compose up
②查看docker进程,发现创建了两个新的容器
③测试访问
http://1.15.76.95/hello
访问成功,说明 nginx 成功代理!
回到目录…
3.4 解决报错
- 问题一:
- 解决方案:
我们可以观察 nginx 启动时的日志,发现它是去那个固定位置找自己的配置文件。所以我们设置数据卷目录的时候,只能是本地路径随意.conf:/etc/nginx/conf.d/default.conf
。 - 问题二:
- 解决方案:
通过查看后台服务器上的项目的日志判断工程是否要求 http1.1 访问,而 nginx 默认是 http1.0访问。
回到目录…
总结:
提示:这里对文章进行总结:
本文是对Docker的学习,首先介绍了安装docker-compose的流程,又学习了Docker Compose构建多容器应用的方法,并且使用compose实现了nginx反向代理SpringBoot项目。之后的学习内容将持续更新!!!