docker系列 利用docker-compose编排springboot服务

docker回顾以及docker-compose引入

在上一篇文章中,咱们详细走了一把利用docker部署springboot服务。如果还没有看过的小伙伴可以点击下面的链接先去看看。

docker系列 利用docker部署springboot服务

在利用docker部署完springboot之后,不知道有没有小伙伴和我一样想到这么一个问题,上篇中咱们利用docker搭建并启动了springboot项目需要的mysql和redis容器,最后使用命令启动springboot项目的时候再将redis和mysql联系起来,命令是这样的:

docker run -id  -p 8890:8890 --name docker_first_pro --link mysql:emysql --link redis:eredis docker_pro_first

但是随之而来问题就来了,如果说往后咱们这个springboot还需要别的组件的支持,比如es或者rabbitmq,那么咱们还得去依靠docker搭建并启动别的中间件,然后再用命令去启动springboot项目,这无疑配置效率是非常底下的。那么怎么解决这个问题呢?我们都能想到,docker作者肯定也想到,答案就是docker-compose。

docker-compose详细介绍

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML
文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

安装docker-compose

下载方式一:sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose github下载安装docker-compose(此种方式较为缓慢)
下载方式二:sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose daocloud下载安装docker-compose(此种方式相对较快)
将可执行权限应用于二进制文件:sudo chmod +x /usr/local/bin/docker-compose
创建软链:sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose文件实例

先来演示一下如何利用docker-compose启动咱们之前演示docker用到的springboot小项目。编写的docker-compose文件如下

version: "3"

services:

  service_redis:
    image: redis:latest
    container_name: eredis
    environment:
      - TZ=Asia/Shanghai
    #宿主机目录:容器目录
    volumes:
      - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf
      - ./data/redis/:/data/
      - ./log/redis/:/var/log/redis/
    command: redis-server /usr/local/etc/redis/redis.conf
    ports:
      - "6379:6379"
    restart: always
   # networks:
    #  - appnet

  service_mysql:
    image: mysql:5.7
    container_name: emysql
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: root
      MYSQL_ROOT_HOST: '%'
    volumes:
      - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./data/mysql/:/var/lib/mysql/
      - ./log/mysql/:/var/log/mysql/
      - ./sql:/docker-entrypoint-initdb.d
    command: [
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci'
    ]
    ports:
      - "3306:3306"
    restart: always
    #networks:
    #  - appnet

  service_web:
    #build:
    #  context: .
    #  dockerfile: Dockerfile
    image: docker_pro_first:latest
    container_name: docker_compose_start_pro
    environment:
      TZ: Asia/Shanghai
      spring.datasource.host: service_mysql
      spring.redis.host: service_redis
    ports:
       - "8890:8890"
    #依赖的编排有哪些,这个很关键,决定了启动的顺序
    depends_on:
      - service_redis
      - service_mysql
    restart: always
    #networks:
     # - appnet

对这个文件稍作解释,其实说白了文件就是搭建并启动了三个容器,分别是mysql、redis以及springboot项目。其中有一些细节需要注意,比如springboot容器必须在其余两个容器启动之后再启动,mysql容器需要在启动的时候导入数据

利用docker-compose文件启动项目

接下来咱们利用docker-compose启动下咱们的服务,在docker-compose.yml所在文件的路径下执行docker-compose up -d即可,此条命令表示后台启动该服务。
使用此种方式启动和利用docker命令启动最后的效果都是一致的。

总结

docker-compose给我们最重要的启发叫做服务编排,关于compose的一些其它命令这里就不再多说,感兴趣的小伙伴可以去官方文档里学习。官方文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值