Docker Compose 容器管理编排

  在开始之前,需要了解什么是Docker Compose。

  假如我们现在有几十上百个微服务需要部署,如果我们手动去buid 构建镜像,那工作量;在或者如果我们的某一个服务出了问题,宕机了,需要重启,但是这个服务又有其他的依赖,这时候我们应该怎么做;Docker Compose就是来解决这类问题的

  那么Docker Compose 到底是什么呢?下图来自官方文档,大概意思:通过yaml文件的方式去定义、配置多个容器,并通过命令去启动它,我们可以使用它去对容器进行编排
在这里插入图片描述
  接下来就开始使用Docker Compose,在使用之前,需要知道,Docker Compose 只是Docker 的一个开源项目,并没有集成在Docker 中,所以我们需要先安装Docker Compose

# 下载Docker Compose,官方的下载地址太慢了,所以我重新找了一个
curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 给 Docker Compose 文件可执行权限
chmod +x docker-compose
# 查看版本

  然后就可以使用Docker Compose,官方给了一个快速开始的python单页面应用,有兴趣的小伙伴可以去尝试(传送门)

  接下来先了解docker-compose.yaml规则,这是整个的核心(官方文档),可以分为三层来编排

# 第一层 版本,与docker 引擎版本对应的,向下兼容
version: ''

# 第二层 服务
service:
	服务1:
		服务配置
	服务2:
		服务配置
	.....

# 第三层 其他配置 网络、卷、全局规则
volumes:
netwoeks:
configd:
.....

  接下来就写一个自己的服务并且上线,首先编写自己的服务,就写一个hello world 吧

# 接口
@RestController
public class HelloController {
    
    
    @Autowired
    private RedisTemplate redisTemplate;

    @GetMapping("/")
    public String hello() {
    
    
        Long views = redisTemplate.opsForValue().increment("views");
        return "hello world! 当前浏览量:" + views;
    }
}

# yaml配置,注意,现在是连接redis,相当于在局域网内通过域名访问Redis,但是现在在本地肯定是运行不了的
server:
  port: 8080
spring:
  redis:
    host: redis

  然后编写dockerfile文件,生成镜像

FROM java:8
COPY *.jar /hello.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/hello.jar","&"]

  现在还需要一个docker-compose.yaml文件,通过这个文件去一键构建镜像,服务启动,就像是吧docker运行容器的指令写到文件中

# 版本
version: '3.8'
# 需要构建的镜像
services:
  # hello镜像,我们自己的服务
  hello:
    # 构建当前路径下的dockerfile
    build: .
    # 也可以执行构建的文件
#    dockerfile: Dockerfile
    # 指定镜像名
    image: hello
    # 依赖的服务镜像
    depends_on:
      - redis
    # 映射的端口
    ports:
      - "8083:8080"

  # redis 服务
  redis:
    # redis的镜像
    image: "library/redis:alpine"

  接下来就是将服务打包并上传到服务器中,至少得有服务jar包,dockerfile,docker-compose.yaml这三个文件,如果你有其他的文件也并上传
在这里插入图片描述
  现在就可以启动构建镜像并运行了,通过 “docker-compose up” 命令,可以看到,执行后会自动去拉取镜像、创建容器,如果没有error或者exited,那这个项目就是运行成功的

# 构建镜像并在前台运行
docker-compose up
# 重新构建
docker-compose up --build
# 构建镜像并在后台运行
docker-compose up -d
# 停止,如果是前台运行,可以直接在当前控制台按 CTRL + C 停止
docker-compose down

在这里插入图片描述
  接下来就测试哈我们的接口,首先看容器,这是我们通过docker-compose创建的容器,然后访问我们的接口,可以看到能访问并且也能从Redis获取到数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45481406/article/details/109188002