温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Docker Compose快速部署多容器服务

发布时间:2022-02-20 11:51:44 来源:亿速云 阅读:742 作者:小新 栏目:开发技术

小编给大家分享一下如何使用Docker Compose快速部署多容器服务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

    1 什么是Docker Compose

    前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。

    使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具

    2 安装Docker Compose

    安装命令:

    [root@iZ2ze4m2ri7irkf6h7n8zoZ ~]# curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose [root@iZ2ze4m2ri7irkf6h7n8zoZ ~]# chmod +x /usr/local/bin/docker-compose

    检查是否安装成功:

    [root@iZ2ze4m2ri7irkf6h7n8zoZ ~]# docker-compose -v

    3 Docker Compose文件格式的简单介绍

    Docker Compose文件一般命名为docker-compose.yml,并且执行Docker-compose命令时在该文件所在目录下执行。

    Docker Compose 分为三层,分别是工程(project)、服务(service)/引用标签、容器(container)

    例如:

    docker-compose.yml   # 一个文件代表一个project  serveices:          # 服务    container-name:   # 容器      build:        - xxx:xxx  network:            # 引用标签    xxx:

    下面是一个标准的docker-compose.yml文件

    version: "3"  # 指定版本 services:     # services   proxy:      # 自定义容器名称     build: ./proxy  # Dockerfile所在目录,用于构建容器     networks: # 自定义容器网络       - frontend   app:            build: ./app     networks:       - frontend       - backend   db:     image: postgres     networks:       - backend networks:   frontend:     driver: custom-driver-1   backend:     driver: custom-driver-2     driver_opts:       foo: "1"       bar: "2"

    4 Docker Compose常用命令

    ps:列出所有运行容器

    docker-compose ps

    logs:查看服务日志输出

    docker-compose logs

    port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口

    docker-compose port eureka 8761

    build:构建或者重新构建服务

    docker-compose build

    start:启动指定服务已存在的容器

    docker-compose start eureka

    stop:停止已运行的服务的容器

    docker-compose stop eureka

    rm:删除指定服务的容器

    docker-compose rm eureka

    up:构建、启动容器

    docker-compose up

    kill:通过发送 SIGKILL 信号来停止指定服务的容器

    docker-compose kill eureka

    pull:下载服务镜像

    docker-compose pull eureka

    scale:设置指定服务运气容器的个数,以 service=num 形式指定

    docker-compose scale user=3 movie=3

    run:在一个服务上执行一个命令

    docker-compose run web bash

    5 使用Docker Compose一键部署Spring Boot+Redis实战

    5.1 构建应用

    5.1.1 Spring Boot项目

    依赖:

    <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--redis--> <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

    配置文件:

    spring:   redis:     #host: 127.0.0.1     host: ymx.redis     port: 6379     password:     jedis:       pool:         max-active: 8         max-wait: -1         max-idle: 500         min-idle: 0     lettuce:       shutdown-timeout: 0

    controller代码:

    @RestController public class HelloController {     @Autowired     private RedisTemplate<String, String> redisTemplate;     @RequestMapping("/hello/{id}")     public String hello(@PathVariable("id") Integer id) {         return redisTemplate.opsForValue().get(String.valueOf(id));     }     @RequestMapping("/save/{id}/{name}")     public String save(@PathVariable("id") Integer id, @PathVariable("name") String name) {         try {             redisTemplate.opsForValue().set(String.valueOf(id), "Hello " + name + "!");         } catch (Exception e) {             return "false";         }         return "success"; }
    5.1.2 Redis配置文件

    只是将redis自带的redis.conf做了一点修改

    #注释掉bind 127.0.0.1 # bind 127.0.0.1 -::1 #修改protected-mode yes->no protected-mode no

    5.2 打包应用并构建目录

    5.2.1 打包Spring Boot项目

    如何使用Docker Compose快速部署多容器服务

    5.2.2 上传redis.conf配置文件
    5.2.3 目录结构
    - mycompose   - docker-compose.yml    - rd       - Dockerfile       - redis.conf   - sp     - Dockerfile       - sp_redis-0.0.1-SNAPSHOT.jar

    5.3 编写Dockerfile

    5.3.1 Spring Boot容器的Dockerfile
    FROM java:8 MAINTAINER YMX "1712229564@qq.com" COPY sp_redis-0.0.1-SNAPSHOT.jar /root/sp_redis-0.0.1-SNAPSHOT.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar","/root/sp_redis-0.0.1-SNAPSHOT.jar"]
    5.3.2 redis容器的Dockerfile
    FROM redis    MAINTAINER ymx 1712229564@qq.com COPY redis.conf /usr/local/etc/redis/redis.conf EXPOSE 6379 CMD ["redis-server","/usr/local/etc/redis/redis.conf" ]

    5.4 编写docker-compose.yml

    version: "2.8" # 表示该 Docker-Compose 文件使用的是 Version 2 file services:   sp-demo:       # 指定服务名称     build: ./sp  # 指定 Dockerfile 所在路径     ports:       # 指定端口映射       - "9001:8080"     links:       - re-demo:ymx.redis # 进行容器链接   re-demo:     build: ./rd

    5.5 运行并测试部署结果

    运行:

    [root@iZ2ze4m2ri7i mycompose]# docker-compose up Creating network "mycompose_default" with the default driver Building re-demo Sending build context to Docker daemon  96.77kB Step 1/5 : FROM redis latest: Pulling from library/redis ......

    测试:

    [root@iZ2ze4m2ri7i mycompose]# curl http://localhost:9001/save/2/Ymx success [root@iZ2ze4m2ri7i mycompose]# curl http://localhost:9001/hello/2 Hello Ymx!

    看完了这篇文章,相信你对“如何使用Docker Compose快速部署多容器服务”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI