一、定义

Docker Compose是一个用来定义和运行复杂应用的Docker工具
一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

二、步骤:

①编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
例如:
在这里插入图片描述

FROM openjdk:8
#将jar包添加到容器中并更名为app.jar
ADD *.jar app.jar
#运行jar包
ENTRYPOINT ["java", "-Xms128m", "-Xmx128m", "-Dspring.profiles.active=dev", "-jar", "/app.jar"]
#暴露6001端口作为微服务
EXPOSE 19012

②使用 docker-compose.yml 定义一个完整的业务单元,安排好整体应用中的各个容器服务
方式一
:此种写法需要提前构建好镜像,在/srm/app/sup目录下执行docker build -t isrm-sup .命令构建好镜像在这里插入图片描述


version: '3.0'
services:
  supService:  #服务名:随便命名
    restart: always #docker服务重启时,容器也启动
    image: isrm-sup  #指定自定义构建好的镜像
    container_name: sup #生成的容器名称
    ports:
      - "19012:19012" # 端口映射
    volumes:
      - /srm/application/back/logs:/srm/application/back/logs # 目录挂载

方式二:此种写法不需要提前构建镜像,执行docker-compose up时会自动构建镜像

version: '3.0'
services:
  supService:
    restart: always
    build: #构建自定义镜像
       context: ./sup/  #dockerfile文件所在目录
       dockerfile: Dockerfile  #dockerfile文件名称
    image: isrm-sup #生成的镜像名称
    container_name: sup #生成的容器名称
    ports:
      - "19012:19012" #端口映射
    volumes:
      - /srm/application/back/logs:/srm/application/back/logs  #目录挂载

③最后,执行 docker-compose up(docker-compose up -d:后台启动) 命令来启动并运行整个应用程序,完整一键部署

三、常用命令:
功能命令
查看帮助docker-compose -h
启动所有docker-compose服务docker-compose up
停止并删除容器、网络、卷、镜像docker-compose down
查看容器输出日志docker-compose logs yml里面的服务id
检查配置docker-compose config
检查配置,有问题才有输出docker-compose config -q
重启服务docker-compose restart
启动服务docker-compose start
停止服务docker-compose stop
进入容器实例内部docker-compose exec yml里面的服务id
进入容器实例内部docker-compose exec docker-compose.yml文件中写的服务id/bin/bash
展示当前docker-compose编排过的运行的所有容器docker-compose ps
展示当前docker-compose编排过的容器进程docker-compose top
删除镜像docker-compose down --rmi all
启动所有docker-compose服务并后台运行docker-compose up -d
GitHub 加速计划 / compose / compose
49
5
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:5 个月前 )
489fe9cf Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com> 3 天前
ef1931c8 Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com> 4 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐