Docker Compose 编排

docker Compose是用于定义和运行多个docker容器应用的工具。编写docker-compose.ymal 文件 一键部署多个服务。

安装

下载Docker Compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

修改文件的权限

chmod +x /usr/local/bin/docker-compose

查看是否安装成功

docker-compose --version

[root@localhost ~]# docker-compose --version
docker-compose version 1.23.2, build 1110ad01

使用Dokcer Compose的步骤

  • 使用Dockerfile定义应用程序环境,一般需要修改初始镜像行为时才需要使用;
  • 使用docker-compose.yml定义需要部署的应用程序服务,以便执行脚本一次性部署;
  • 使用docker-compose up命令将所有应用服务一次性部署起来。

docker-compose.yml 常用命令

-images

指定运行镜像名称

##${PROJECT}和{TAG} 为同目录下.env 配置   
  image: ${PROJECT}/user-service:${TAG}

-container_name

 #配置容器的名称
 container_name: user-service

-ports

#指定宿主机和容器的端口映射
ports:
	-8010:8010

-volumes

#将外部文件挂载到容器中
volumes:
	-/mydata/mysql/log:/var/log/mysql
	-/mydata/mysql/conf:/etc/mysql
#连接其他容器的服务 如redis,mysql
links:
	-db:database

-depends_on

#当前服务下依赖于哪些服务 会去先加载依赖的服务
    depends_on:
    	-payment-service

-restart

    #运行compose 重启服务
    restart: always

-build

服务除了指定基础的镜像,还可以基于一份Dockerfile,再使用up时执行构建dockerfile任务

    build:
      context: ./business/user-service ##指定项目路径 可以用相对路径
      dockerfile: Dockerfile            ##指定项目路径下的dockerfile文件

-environment

#配置环境变量
    environment:
      - PROFILE=${PROFILE} #读取配置文件给PEOFILE赋值,在具体项目下的dockerfile文件能使用该环境变量
#如下
dockerfile:
CMD ["--spring.profiles.active=${PROFILE}"]

结合起来使用

version: '3'
services:

  blade-gateway:
    image: ${PROJECT}/blade-gateway:${TAG}
    build:
      context: ./blade-framework/blade-gateway
      dockerfile: Dockerfile
    container_name: blade-gateway
    privileged: true
    restart: always
    environment:
      - PROFILE=${PROFILE}
    depends_on:
      - user-service
    ports:
      - 8001:8001
      
  mall-service:
    image: ${PROJECT}/user-service:${TAG}
    build:
      context: ./business/user-service
      dockerfile: Dockerfile
    container_name: user-service
    privileged: true
    restart: always
    environment:
      - PROFILE=${PROFILE}
    ports:
      - 8010:8010

Docker compose 常用命令

构建、创建、启动相关容器

# -d表示在后台运行
docker-compose up -d

指定文件启动

docker-compose -f docker-compose.yml up -d

停止所有相关容器

docker-compose stop

列出所有容器信息

docker-compose ps

Docker compose Idea部署微服务

IDEA安装docker插件,本地安装Docker Quickstart Terminal并启动服务

IDEA新建一个docker服务 指定docker-compose.yaml 文件

maven打包整个项目后,运行docker-compose服务。