Docker Compose 构建多容器应用

文章目录

  • 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 是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动和停止。

使用步骤:

  1. 利用 Dockerfile 定义运行环境镜像
  2. 使用 docker-compose.yml 定义组成应用的各服务
  3. 运行 docker-compose up 启动应用

Docker Compose 构建多容器应用_第1张图片

一、安装 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

关于容器间调用,可参考文章:Docker Compose 网络设置

回到目录…

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 Compose 构建多容器应用_第2张图片

②查看docker进程,发现创建了两个新的容器
在这里插入图片描述

③测试访问

http://1.15.76.95/hello

在这里插入图片描述
访问成功,说明 nginx 成功代理!

回到目录…

3.4 解决报错

  1. 问题一:
    在这里插入图片描述
    解决方案:
    我们可以观察 nginx 启动时的日志,发现它是去那个固定位置找自己的配置文件。所以我们设置数据卷目录的时候,只能是 本地路径随意.conf:/etc/nginx/conf.d/default.conf
    在这里插入图片描述

  2. 问题二:
    在这里插入图片描述
    解决方案:
    通过查看后台服务器上的项目的日志判断工程是否要求 http1.1 访问,而 nginx 默认是 http1.0访问。我们可以参考文章:docker nginx容器反向代理失败。

回到目录…


总结:
提示:这里对文章进行总结:
本文是对Docker的学习,首先介绍了安装docker-compose的流程,又学习了Docker Compose构建多容器应用的方法,并且使用compose实现了nginx反向代理SpringBoot项目。之后的学习内容将持续更新!!!

你可能感兴趣的:(Git,Linux,Docker,docker,运维,容器,compose,nginx)