docker系列(9) - docker-compose

news/2024/7/12 2:24:53 标签: docker, eureka, 容器

文章目录

  • 9. compose编排
    • 9.1 介绍
    • 9.2 安装
    • 9.3 compose常用命令
    • 9.4 实战Springboot部署
      • 9.4.1 准备组件配置文件
        • 9.4.1.1 redis的配置文件
        • 9.4.1.2 MySQL的配置文件
        • 9.4.1.3 SpringBoot打包文件
      • 9.4.2 准备docker-compose.yml
      • 9.4.3 启动服务
      • 9.4.4 测试验证
    • 9.5 实战Elasticsearch+Kibana案例
      • 9.5.1 准备组件配置文件
        • 9.5.1.1 Elasticsearch配置
        • 9.5.1.2 Kibana配置
      • 9.5.2 docker-compose配置
      • 9.5.3 验证测试

9. compose编排

9.1 介绍

多服务部署工具,通过一个docker-compose.yml模板文件,定义一组关联的应用容器为一个项目。
简单来说,就是当我们一个项目有多个服务需要启动时,通过docker-compose直接一键启动,就可以将所有相关的服务同时启动或者停止。

9.2 安装

参考官方安装文档:https://docs.docker.com/compose/install/linux/
以下两种方式都可以:
第一种:包管理器安装

sudo yum install docker-compose-plugin

第二种:手工安装

curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 通常不需要执行这句
#sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

#查看版本
docker-compose --version

#卸载方法
sudo rm /usr/local/bin/docker-compose

9.3 compose常用命令

说明命令
docker-compose -h帮助
docker-compose up启动所有docker-compose服务
docker-compose up -d启动所有docker-compose服务并后台运行
docker-compose down停止并删除容器,网络,卷,镜像
docker-compose exec yml里面的服务id进入容器内部,停止并删除容器,网络,卷,镜像
docker-compose ps展示当前运行的所有容器
docker-compose top展示当前运行的容器进程
docker-compose logs yml的服务id查看容器输出日志
docker-compose config检查配置
docker-compose config -q检查配置,有问题才输出
docker-compose restart重启服务
docker-compose start启动服务
docker-compose stop停止服务

9.4 实战Springboot部署

使用docker-compose来启动springboot项目。
使用到springboot、redis、mysql组件。

9.4.1 准备组件配置文件

9.4.1.1 redis的配置文件

redis配置文件: /docker/redis/redis.conf

# 开启 AOF 持久化
appendonly yes

# 指定 AOF 文件名
appendfilename "appendonly.aof"

# 指定 AOF 文件保存目录
dir /data

# 关闭 RDB 持久化
save ""
# 开启 RDB 持久化
#save 900 1
#save 300 10
#save 60 10000

# 禁用 Redis 的保护模式,允许外部连接
protected-mode no

# 允许其他服务访问
bind 0.0.0.0

# 指定 Redis 监听的端口
port 6379

# 指定日志生成的文件
logfile redis.log
9.4.1.2 MySQL的配置文件

mysql的配置文件:/docker/mysql/conf/my.cnf

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake

skip-name-resolve
9.4.1.3 SpringBoot打包文件

springboot: 使用7.6.3中打包的镜像springboot:1.0

dockercomposeyml_115">9.4.2 准备docker-compose.yml

version: "3"

services: 
  bootService:
    build: .
    image: springboot:1.0
    container_name: springboot
    environment:
      SPRING_PROFILES_ACTIVE: prod
    ports:
      - "9002:9002"
    volumes:
      - /app/microService:/data
    networks:
      - bridge
    depends_on:
      - redis
      - mysql

  redis:
    image: redis:6.2.13
    container_name: redis
    privileged: true
    ports:
      - 6379:6379
    environment:
      - TZ=Asia/Shanghai
      - TAKE_FILE_OWNERSHIP=true
    volumes:
      - /docker/redis/data:/data 
      - /docker/redis/redis.conf:/etc/redis/redis.conf
    networks:
      - bridge
    command: redis-server /etc/redis/redis.conf 
  
  mysql:
    image: mysql:5.7
    container_name: mysql
    privileged: true
    ports:
      - "3306:3306"
    networks:
      - bridge
    volumes:
      - /docker/mysql/log:/var/log/mysql 
      - /docker/mysql/data:/var/lib/mysql
      - /docker/mysql/conf/:/etc/mysql/conf.d
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_ALLOW_EMPTY_PASSWORD: "no"
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问

networks:
  bridge: 

9.4.3 启动服务

# 先检查配置是否有异常
docker-compose config -q

# 启动所有容器
#第一次测试可以不使用-d
docker-compose up   

在这里插入图片描述

在这里插入图片描述

一切正常,转为后台运行

# 先移除所有的
docker-compose down

# 再后台运行
docker-compose -d up

9.4.4 测试验证

Commands:
  build       Build or rebuild services
  config      Parse, resolve and render compose file in canonical format
  cp          Copy files/folders between a service container and the local filesystem
  create      Creates containers for a service.
  down        Stop and remove containers, networks
  events      Receive real time events from containers.
  exec        Execute a command in a running container.
  images      List images used by the created containers
  kill        Force stop service containers.
  logs        View output from containers
  ls          List running compose projects
  pause       Pause services
  port        Print the public port for a port binding.
  ps          List containers
  pull        Pull service images
  push        Push service images
  restart     Restart service containers
  rm          Removes stopped service containers
  run         Run a one-off command on a service.
  start       Start services
  stop        Stop services
  top         Display the running processes
  unpause     Unpause services
  up          Create and start containers
  version     Show the Docker Compose version information
  wait        Block until the first service container stops

例如重启服务:

# 查看服务
docker-compose ls

#重启服务
docker-compose restart bootService

# 启动服务
docker-compose start bootService

# 停止服务
docker-compose stop bootService

在这里插入图片描述

9.5 实战Elasticsearch+Kibana案例

9.5.1 准备组件配置文件

9.5.1.1 Elasticsearch配置

配置文件:/docker/elasticsearch/config/elasticsearch.yml

network.host: 0.0.0.0
discovery.type: single-node
9.5.1.2 Kibana配置

配置文件: /docker/kibana/config/kibana.yml

server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]  #
elasticsearch.username: "admin"
elasticsearch.password: "admin"
i18n.locale: "zh-CN"

[“http://elasticsearch:9200”]这里elasticsearch是指容器的服务名,不设置这个,会导致kibana连接不上elasticsearch。

dockercompose_266">9.5.2 docker-compose配置

docker-compose.yml

version: '3.3'
services:
  elasticsearch:
    image: elasticsearch:7.17.7    # 使用的镜像名称
    container_name: elasticsearch	# 容器名称
    ports:	# 指定暴露的端口
      - 9200:9200
      - 9300:9300
    environment: 
      - ES_JAVA_OPTS= -Xms2g -Xmx2g # 指定 JVM 内存大小
    volumes:	# 指定挂载目录
      - /docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /docker/elasticsearch/data:/usr/share/elasticsearch/data
      - /docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins
      - /docker/elasticsearch/logs:/usr/share/elasticsearch/logs
    networks:	
       - bridge
  kibana:
    image: kibana:7.17.7
    container_name: kibana
    ports:
     - 5601:5601
    depends_on:	# 服务依赖
      - elasticsearch
    volumes:
      - /docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    networks:
      - bridge
networks:
  bridge:

9.5.3 验证测试

#启动:
docker-compose up -d

# 卸载
docker-compose down

在这里插入图片描述

http://bidata:5601 访问


http://www.niftyadmin.cn/n/5059764.html

相关文章

《HelloGitHub》第 90 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …

leetcode 286 墙与门

题目: You are given a m x n 2D grid initialized with these three possible values. -1 - A wall or an obstacle.0 - A gate.INF - Infinity means an empty room. We use the value 231 - 1 = 2147483647 to represent INF as you may assume that the distance to a gat…

linux Mysql 8.0.16 安装搭建

文章目录 Mysql 搭建一、安装包下载二、创建用户组用户和修改权限三、配置my.cnf Mysql 搭建 一、安装包下载 mysql 下载地址:https://downloads.mysql.com/archives/community/ 这里有所有的mysql的版本,下载自己需要的版本,我们这里下载 …

实现自动化获取1688商品详情数据接口经验分享

获取电商平台商品详情数据,主要用过的是爬虫技术,过程比较曲折,最终结果是好的。我将代码都封装在1688.item_get接口中,直接调用此接口可以一步抓取。 展示一下获取成功示例: 1688商品详情页展示 传入商品ID调用item…

全面解析‘msvcp140.dll丢失的解决方法’这个问题

msvcp140.dll 是什么东西? msvcp140.dll 是 Microsoft Visual C 2015 Redistributable Package 中的一个动态链接库文件。它包含了 C运行时库中的函数和类,这些函数和类在开发 C应用程序时被广泛使用。msvcp140.dll 的主要作用是在 Windows 操作系统中提…

基于微信小程序的刷题考试系统设计与实现(适用于各类考试类、答题类程序)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

内存函数(memcpy、memmove、memset、memcmp)你真的懂了吗?

💓博客主页:江池俊的博客⏩收录专栏:C语言进阶之路👉专栏推荐:✅C语言初阶之路 ✅数据结构探索💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

PDF文件压缩软件 PDF Squeezer mac中文版​软件特点

PDF Squeezer mac是一款macOS平台上的PDF文件压缩软件,可以帮助用户快速地压缩PDF文件,从而减小文件大小,使其更容易共享、存储和传输。PDF Squeezer使用先进的压缩算法,可以在不影响文件质量的情况下减小文件大小。 PDF Squeezer…