Docker 编排利器 DockerCompose,编排之后可以一次性通过一条命令启动一组服务

例如一条命令启动 SpringBoot 项目,同时启动 SpringBoot 项目依赖的其他中间件(MySQL、Redis等)

系列文章欢迎访问:https://www.itwxe.com/posts/9e76db89/

一、安装DockerCompose

1、下载 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

2、授予 docker-compose 文件可执行权限。

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

3、查看会否安装成功。

docker-compose --version

二、DockerCompose详解

1. 使用DockerCompose步骤

  • 使用 Dockerfile 构建自定义镜像上传服务器,一般需要修改初始镜像行为时才需要使用。
  • 使用 docker-compose.yml 文件定义需要部署的应用程序服务,这样它们可以在隔离环境中一起运行,以便执行脚本一次性部署。
  • 最后执行 docker-compose up 命令来创建并启动所有服务。

2. docker-compose.yml常用命令

version

描述 Compose 文件的版本信息,各版本详细信息可以参考 官方文档

# 指定 3 版本语法
version: '3'

services

services 节点下面的即是定义的各种服务,服务之下为容器,容器与容器直之间可以以服务名称为域名进行访问。

image

指定运行的镜像名称。

# 指定镜像为 mysql5.7
image: mysql:5.7

container_name

指定容器名称。

# 容器名称
container_name: admin_mysql

ports

指定宿主机和容器的端口映射。

# 映射 mysql端口
ports:
- 3306:3306

volumes

将宿主机的文件或目录挂载到容器中。

# 挂载 mysql 目录到容器
volumes:
- /itwxe/dockerData/mysql/data:/var/lib/mysql
- /itwxe/dockerData/mysql/conf:/etc/mysql
- /itwxe/dockerData/mysql/log:/var/log/mysql

environment

配置环境变量。

# 设置 mysql 密码
environment:
- MYSQL_ROOT_PASSWORD=root

links

连接其他容器的服务。

# 可以 admin_mysql 为域名访问服务名称为 db 的容器
links:
- db:admin_mysql

3. Docker Compose常用命令

启动所有相关容器

docker-compose up -d

指定文件启动

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

停止所有相关容器

docker-compose stop

列出所有容器信息

docker-compose ps

停止并删除所有容器(注意数据挂载)

docker-compose down

三、SpringBoot示例

此处还是以自己写的项目为示例,我的项目依赖 MySQL、Redis、minio(非必要)。

1、打包 SpringBoot 项目镜像,打包可以参考 Docker使用maven插件打包SpringBoot项目

2、我的项目启动依赖 MySQL 中的 sunny 库,首先得创建容器,挂载宿主机目录,可以参考 Docker搭建MySQL并挂载数据

3、项目依赖 Redis 镜像自定义配置启动,可以参考 Docker搭建Redis5.0并挂载数据

4、修改项目 MySQL 和 Redis 使用别名访问,以 MySQL 为例。

# 修改前
jdbc:mysql://192.168.5.33:3306/sunny?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT%2B8 # 修改后
jdbc:mysql://admin_mysql:3306/sunny?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT%2B8

5、编辑 docker-compose.yml 文件。

version: '3'
services:
# 指定MySQL服务名称
mysql:
# 指定服务使用的镜像
image: mysql:5.7
# 指定容器名称
container_name: admin_mysql
# 指定服务运行的端口
ports:
- 3306:3306
# 指定容器中需要挂载的文件
volumes:
- /itwxe/dockerData/mysql/data:/var/lib/mysql
- /itwxe/dockerData/mysql/conf:/etc/mysql
- /itwxe/dockerData/mysql/log:/var/log/mysql
# 指定容器的环境变量
environment:
- MYSQL_ROOT_PASSWORD=123456
# 指定Redis服务名称
redis:
# 使用自定义镜像(指定配置文件)
image: itwxe/redis:5.0.8
container_name: admin_redis
ports:
- 6379:6379
volumes:
- /itwxe/dockerData/redis/data:/data
# 指定项目服务名称
sunny-admin:
# 指定服务使用的镜像
image: itwxe/sunny-admin:0.0.1
# 指定容器名称
container_name: sunny-admin
# 指定服务运行的端口
ports:
- 9002:9002
# 指定容器中需要挂载的文件
volumes:
- /itwxe/dockerData/sunny-admin/logs:/var/logs
# 指定别名,项目yml中可以通过别名访问,例如:
links:
- mysql:admin_mysql
- redis:admin_redis

6、进入 docker-compose.yml 文件目录,启动服务。

docker-compose up -d

可以看到服务都正常启动了,此时可以访问下项目,项目正常访问。

都读到这里了,来个 点赞、评论、关注、收藏 吧!

文章作者:IT王小二

首发地址:https://www.itwxe.com/posts/e4feb9b4/

版权声明:文章内容遵循 署名-非商业性使用-禁止演绎 4.0 国际 进行许可,除特殊声明外皆为原创,转载请在文章页面明显位置给出作者与原文链接。

Docker编排利器DockerCompose的更多相关文章

  1. Docker应用:Docker-compose(容器编排)

    阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) 前言: 昨天完成了Docker入门示例(Docker应用:Hello World),示 ...

  2. Win10上的Docker应用:Docker-compose(容器编排)

    阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) 前言: 昨天完成了Docker入门示例(Docker应用:Hello World),示 ...

  3. Docker那些事儿之编排工具docker-compose

    前面已经讲解过docker的一些基础使用,镜像创建的操作过程,如果大量容器需要同时部署,一个一个容器进行服务器上的部署,估计要疯掉,在使用上我们需要找到更好更便捷的使用方式,今天要讲解的容器编排工具d ...

  4. Docker快速入门——Docker-Compose

    一.Docker-Compose简介 1.Docker-Compose简介 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.Docker-Com ...

  5. Docker入门之docker-compose

    参考:https://blog.51cto.com/9291927/2310444 一,Docker-compose简介 1,Docker-compose简介 Docker-Compose项目是Doc ...

  6. docker学习(7) docker-compose使用示例

    上一回学习了如何利用docker搭建一个mysql + java service + nginx,总共4个docker容器,如果采用docker run的方式一个一个容器去创建十分麻烦.为了能更高效的 ...

  7. docker进阶-初探Docker-compose

    什么是Docker-compose   compose 翻译成中文的意思是"构成"和"组成"的意思.Docker我之前把他比作一个大轮船,这个轮船上面可以放很多 ...

  8. docker实践之docker-compose部署mysql

    文章目录 docker实践之docker-compose部署mysql 1.安装部署docker 2.编写docker-compose文件 3.编写配置文件和初始化文件 4.启动数据库 5.检查初始化 ...

  9. Docker系列-(3) Docker-compose使用与负载均衡

    上一篇文章介绍了docker镜像的制作与发布,本文主要介绍实际docker工程部署中经常用到的docker-compose工具,以及docker的网络配置和负载均衡. Docker-compose介绍 ...

随机推荐

  1. 容斥+dp (一)

    ARC115 E AtCoder Problem Statement Given is a sequence of \(N\) integers \(A_1\),\(A_2\),...,\(A_N\) ...

  2. ES6函数参数

    之前在看Vue2.0的时候,就被很多的箭头函数困扰,一直不知道是怎么回事,虽然箭头函数四个字在我耳边一直转圈,今天小编整理整理箭头函数里面的常见用法和表现形式,在这个Vue3.0已经到来的一段时间,希 ...

  3. mybatis 实现增删改查(CRUD)

    如何创建项目,注入依赖,编写核心配置文件.工具类.实体类这里就不详细说了,具体可以参考下边这条博文 https://www.cnblogs.com/bear7/p/12491937.html 这里将详 ...

  4. 【SQLite】教程02-SQLite命令

    获取帮助 sqlite> .help 获得以下帮助: 命令 描述 .backup ?DB? FILE 备份 DB 数据库(默认是 "main")到 FILE 文件. .bai ...

  5. python学习笔记04-了解操作符与条件分支

    先来了解一下条件操作符: 运算符 描述 示例 == 检查两个操作数的值是否相等,如果是则条件变为真. 如a=3,b=3则(a == b) 为 true. != 检查两个操作数的值是否相等,如果值不相等 ...

  6. Linkerd 2.10(Step by Step)—多集群通信

    Linkerd 2.10 系列 快速上手 Linkerd v2.10 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traef ...

  7. Vue——v-for动态绑定id的问题

    问题:在Vue中,会遇到许多个多选框,倘若数量很庞大那么一个一个input框.label节点寻找,这样操作很繁琐. 直接上解决方案吧: html页面: <ul v-for="(item ...

  8. 透彻详解(3)旁路电容100nF_0.1uF的由来计算

    原文地址点击这里: 前一节我们已经详细解释了旁路电容在数字电路系统中所起的基本且重要作用,即储能与为高频噪声电流提供低阻抗路径,尽管还并未给旁路电容的这些功能概括一个"高大上"的名 ...

  9. gRPC趁现在还没大火,抢先了解一下

    前言 系统分布式已经成为程序员的家常,将大型单体划分为相对简单的小模块,分散系统能力,提升系统扩展性.功能模块复用性等:各功能模块之间肯定会有很多数据共享和交互的应用场景,那就避免不了各模块之间的通信 ...

  10. Linux网络命令与脚本使用

    作为系统管理员,经常需要诊断和解决网络问题,而配置.监控与保护网络有助于发现问题并在事情范围扩大前得意解决,并且网络的性能与安全也是管理与诊断网络的重要部分.这里总结一下常用与Linux网络管理的命令 ...