Docker-compose安装、使用,容器化部署springboot项目

news2024/12/26 15:06:59

目录

一、docker-compose的安装

1、按官网的方式去安装

2、通过pip进行安装

3、离线安装    

二、docker-compose常用命令

三、docker-compose.yml 说明

1.基本结构

四、docker-compose部署SpringBoot项目

1.编写docker-compose.yml文件

2.使用docker-compose启动容器

3.取消部署

4.查看日志

5.使用 Docker Compose 实现容器IP和宿主机IP一致 


 

一、docker-compose的安装

1、按官网的方式去安装

        1)下载docker-compose
            curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
            若速度较慢,可以使用如下命令:
            curl -L "https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        2)修改目录权限(添加可执行权限)
            chmod +x /usr/local/bin/docker-compose
        3)创建软连接
            ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
        4)验证安装是否完成
            docker-compose --version

2、通过pip进行安装

        安装pip
        yum -y install epel-release
        yum -y install python-pip
        查看版本
        pip --version
        更新pip
        pip install --upgrade pip
        安装docker-compose
        pip install docker-compose
        查看docker compose的版本
        docker-compose version

3、离线安装    

        访问https://github.com/docker/compose/releases,下载 docker-compose-Linux-x86_64,我是复制链接地址,在迅雷中下载的,下载后,将docker-compose-Linux-x86_64重命名为docker-compose
        通过ssh工具MobaXterm,将刚才下载的docker-compose文件上传到centos7的/usr/local/bin/目录下

        重命名并添加执行权限

cd /usr/local/bin/

mv ./docker-compose-linux-x86_64 docker-compose

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

        docker-compose -v出现版本信息说明安装成功

        

二、docker-compose常用命令

    1)docker-compose -help         查看帮助。
    2)docker-compose config -q     验证docker-compose.yml文件。当配置正确时,不输出任何内容,当配置错误时,输出错误信息。
    3)docker-compose pull          拉取服务依赖的镜像。
        # 拉取工程中所有服务依赖的镜像
        docker-compose pull
        # 拉取工程中 nginx 服务依赖的镜像
        docker-compose pull nginx
        # 拉取镜像过程中不打印拉取进度信息
        docker-compose pull -q
    4)docker-compose up             创建并启动所有服务的容器。指定多个yml加-f选项。以守护进程模式运行加-d选项。
        # 前台启动
        docker-compose up
        # 后台启动
        docker-compose up -d
        # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个 yml
        docker-compose -f docker-compose.yml up -d
    5)docker-compose logs            查看服务容器的输出日志。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过--no-color来关闭颜色。
        # 输出日志,不同的服务输出使用不同的颜色来区分
        docker-compose logs
        # 跟踪日志输出
        docker-compose logs -f
        # 关闭颜色
        docker-compose logs --no-color
    6)docker-compose ps            列出工程中所有服务的容器。
        # 列出工程中所有服务的容器
        docker-compose ps
        # 列出工程中指定服务的容器
        docker-compose ps nginx
    7)docker-compose run            在指定服务容器上执行一个命令。
        # 在工程中指定服务的容器上执行 echo "helloworld"
        docker-compose run nginx echo "helloworld"
    8)docker-compose exec            进入服务容器。
        # 进入工程中指定服务的容器
        docker-compose exec nginx bash
        # 当一个服务拥有多个容器时,可通过 --index 参数进入到该服务下的任何容器
        docker-compose exec --index=1 nginx bash
    9)docker-compose pause            暂停服务容器
        # 暂停工程中所有服务的容器
        docker-compose pause
        # 暂停工程中指定服务的容器
        docker-compose pause nginx
    10)docker-compose unpause        恢复服务容器。
        # 恢复工程中所有服务的容器
        docker-compose unpause
        # 恢复工程中指定服务的容器
        docker-compose unpause nginx
    11)docker-compose start        启动服务容器。
        # 启动工程中所有服务的容器
        docker-compose start
        # 启动工程中指定服务的容器
        docker-compose start nginx
    12)docker-compose stop            停止服务容器。
        # 停止工程中所有服务的容器
        docker-compose stop
        # 停止工程中指定服务的容器
        docker-compose stop nginx
    13)docker-compose kill            通过发送SIGKILL信号停止指定服务的容器。
        # 通过发送 SIGKILL 信号停止工程中指定服务的容器
        docker-compose kill nginx
    14)docker-compose rm             删除服务(停止状态)容器。
        # 删除所有(停止状态)服务的容器
        docker-compose rm
        # 先停止所有服务的容器,再删除所有服务的容器
        docker-compose rm -s
        # 不询问是否删除,直接删除
        docker-compose rm -f
        # 删除服务容器挂载的数据卷
        docker-compose rm -v
        # 删除工程中指定服务的容器
        docker-compose rm -sv nginx
    15)docker-compose down            停止并删除所有服务的容器、网络、镜像、数据卷。
        # 停止并删除工程中所有服务的容器、网络
        docker-compose stop
        # 停止并删除工程中所有服务的容器、网络、镜像
        docker-compose down --rmi all
        # 停止并删除工程中所有服务的容器、网络、数据卷
        docker-compose down -v
    16)docker-compose images        打印服务容器所对应的镜像。
        # 打印所有服务的容器所对应的镜像
        docker-compose images
        # 打印指定服务的容器所对应的镜像
        docker-compose images nginx
    17)docker-compose port            打印指定服务容器的某个端口所映射的宿主机端口。
        docker-compose port nginx 80
    18)docker-compose top            显示正在运行的进程。
        # 显示工程中所有服务的容器正在运行的进程
        docker-compose top
        # 显示工程中指定服务的容器正在运行的进程
        docker-compose top nginx

三、docker-compose.yml 说明

创建 docker-compose.yml 文件是使用 Docker Compose 管理多容器应用的第一步。这个 YAML 格式的文件详细描述了服务、网络和卷等组件以及它们之间的关系。下面是对一个典型 docker-compose.yml 文件结构的详解:

1.基本结构

一个基本的 docker-compose.yml 文件通常包括以下几个部分:

version: '3.8' # Docker Compose 文件版本
services: # 定义服务
  service_name_1: # 服务1的名称
    image: image_name_1 # 使用的镜像
    build: # 或者使用 Dockerfile 构建镜像
      context: . # Dockerfile 所在的上下文路径
      dockerfile: Dockerfile # Dockerfile 的名称,默认为 Dockerfile
    ports:
      - "host_port:container_port" # 端口映射
    environment: # 环境变量
      VAR_NAME: value
    volumes: # 数据卷挂载
      - host_path:container_path # 主机路径:容器路径
    networks: # 网络配置
      - network_name
    depends_on: # 依赖服务
      - service_name_2
    restart: always # 重启策略
    command: # 覆盖容器启动命令
      - your-command
      - here
 
  service_name_2: # 类似地定义其他服务...
 
networks: # 可选部分,定义网络
  network_name:
    driver: bridge # 网络类型,默认为桥接网络
 
volumes: # 可选部分,定义数据卷
  volume_name:
    driver: local # 数据卷驱动,默认为本地存储

关键概念解释
        version: 指定 Docker Compose 文件的版本号,这影响到你能使用的功能和语法。
        services: 定义了组成应用的服务集合。每个服务定义了如何构建或使用哪个镜像、环境变量、端口映射等。
        image: 指定服务使用的 Docker 镜像名称。
        build: 当你需要基于 Dockerfile 构建镜像时使用。
        ports: 映射容器端口到宿主机端口,格式为 宿主机端口:容器端口。
        environment: 设置环境变量,供服务中的进程使用。
        volumes: 挂载数据卷,用于持久化数据或共享数据。
        networks: 定义网络,让服务之间可以相互通信。
        depends_on: 指定服务启动的依赖顺序。
        restart: 设置服务的重启策略,如 always 表示无论何种退出状态都会重启容器。
        command: 覆盖容器启动时默认执行的命令。
实践建议
        简洁性: 尽量保持文件的简洁明了,可以通过变量和外部文件引用提高可维护性。
        版本控制: 将 docker-compose.yml 文件纳入版本控制系统,便于团队协作和回溯历史变更。
        测试: 在应用更改后,使用 docker-compose up 命令测试配置是否正确无误。
        通过上述细节,你可以根据实际需求灵活编写 docker-compose.yml 文件,实现复杂应用的快速部署和管理。

四、docker-compose部署SpringBoot项目

 docker-compose部署SpringBoot项目依赖于docker,Dockerfile编写、制作docker镜像步骤请查看如下连接

Docker安装、使用,容器化部署springboot项目-CSDN博客

1.编写docker-compose.yml文件

version: '3'
services:
  mes-gateway:
    restart: always
    container_name: mes-gateway
    image: mes-gateway:1.0.1
    ports:
      - 8080:8080
    volumes:
      - ./gateway/mes-gateway-1.0.1.jar:/home/docker/mes-gateway-1.0.1.jar
      - /etc/localtime:/etc/localtime
      - ./logs/mes-gateway:/home/mes/docker/mes/logs/mes-gateway
    networks:
      - mesnetwork
      
  mes-auth:
    restart: always
    container_name: mes-auth
    image: mes-auth:1.0.1
    ports:
      - 9200:9200
    volumes:
      - ./auth/mes-auth-1.0.1.jar:/home/docker/mes-auth-1.0.1.jar
      - /etc/localtime:/etc/localtime
      - ./logs/mes-auth:/home/mes/docker/mes/logs/mes-auth
    networks:
      - mesnetwork


networks:
  mesnetwork:
    external: true

2.使用docker-compose启动容器

 docker-compose up -d # -d表示以守护模式启动,会一直运行在后台 

3.取消部署

执行以下任一命令即可 

 删除所有容器实例(常用于排查问题的时候)

docker-compose down

暂停所有容器,但是不删除容器实例(常用于停机维护前暂停所有容器服务)
 docker-compose stop 

4.查看日志

# 查看所有日志
docker-compose logs -f
 
# 持续打印某个应用的日志
docker logs -f 容器名
 
# 持续打印某个应用的日志(只显示最后10行)
docker logs -f 容器名 --tail 10
 
# 导出某个容器的所有日志
docker logs 容器名 > app.log 

5.使用 Docker Compose 实现容器IP和宿主机IP一致 

Docker Compose 是 Docker 官方提供的一个工具,用于定义和运行多个 Docker 容器的应用程序。它使用 YAML 文件定义容器相关的配置信息,并提供简单的命令来管理容器。

要实现容器IP和宿主机IP一致,我们需要在 Docker Compose 配置文件中设置网络模式为 host。在 host 模式下,容器与宿主机共享同一个网络命名空间,容器将直接使用宿主机的 IP 地址。以下是一个示例的 Docker Compose 配置文件:

version: '3'
services:
  myapp:
    image: myapp:latest
    network_mode: "host"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

eNSP学习——RIP与不连续子网

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、组建基本的RIPv1网络 3.RIPv1中解决不连续子网问题 4.RIPv2中解决不连续子网问题 需要eNSP各种配置命令的点击链接自取:华为eNS…

小程序 UI 风格魅力非凡

小程序 UI 风格魅力非凡

web安全基础学习笔记

这里写目录标题 1.使用hackbar2.php漏洞基本分析 弱类型语言2.2 php漏洞找到隐藏的源代码之 index.php~2.3 php漏洞找到隐藏的源代码之 vim的临时文件 /.index.php.swp3.php漏洞基本分析 数组 3.php漏洞基本分析 extract4.php漏洞基本分析 strpos eregi函数漏洞4.php漏洞基本分…

docker学习--最详细的docker run 各子命令解释与应用

文章目录 docker run应用docker run -it那怎样才能退出容器而不用容器关闭呢 docker run -d-p-P--name docker run 容器运行命令 docker run 常见的子命令及其含义 -i 交互式,和-t一起使用 -t 打开一个终端 -d 后台运行 -p/-P 暴露容器中的服务端口 –name 指定容…

如何备份和恢复华为手机?

智能手机已成为我们日常生活中不可或缺的一部分,它们存储着大量敏感数据。因此,确保数据安全,定期备份至关重要,以防手机意外丢失、损坏或被盗。 如果您拥有华为设备,并且正在寻找如何将华为手机备份到PC的方法&#…

接口签名和postman预处理生成签名

nestjs后端代码 controller Get(md5hmacSHA1b64)postMd5hmacSHA1b64(Req() request: Request, Query() query) {// 获取GET请求参数const queryParamsMap new Map(Object.entries(query));return this.handleMd5hmacSHA1b64(queryParamsMap, request);}Post(md5hmacSHA1b64)U…

【Redis】解决 Redis 运行在 Protected Mode 下的 DENIED 错误:消除 Redis 受保护模式的完美方案

【Redis】解决 Redis 运行在 Protected Mode 下的 DENIED 错误:消除 Redis 受保护模式的完美方案 大家好 我是寸铁👊 总结了一篇【Redis】解决 Redis 运行在 Protected Mode 下的 DENIED 错误:消除 Redis 受保护模式的完美方案✨ 喜欢的小伙伴…

RAG 查询检索模块 - 检索 - Pinecone 混合检索方案

虽然向量检索有助于检索给定查询的语义相关块,但它有时在匹配特定关键字词方面缺乏准确性。 为了解决这个问题,混合检索是一种解决方案。该策略充分利用了矢量搜索和关键字搜索等不同检索技术的优势,并将它们智能地组合在一起。使用这种混合…

Linux驱动开发笔记(四)设备树进阶及GPIO、Pinctrl子系统

文章目录 前言一、设备树的进阶知识1. 追加/修改节点内容2.chosen子节点3. 获取设备树节点信息3.1 of_find_node_by_path( )函数3.2 of_find_node_by_name( )函数3.3 of_find_node_by_type( )函数3.4 of_find_compatible_node( )函数3.5 of_find_matching_node_and_match( )函数…

如何将照片从Android传输到笔记本电脑?

目前全球大部分照片都是由手机拍摄的。唯一的问题是这些照片会占用您的内部存储或 SD 卡上的大量空间。如果您的Android设备存储空间不足,您可能会被迫将照片从Android手机传输到笔记本电脑。您访问此网站只是因为您想了解如何将图片从Android传输到笔记本电脑。 如…

Ubuntu24.04开发环境配置

目录 0. 前言1. 宇宙最强编辑器(暂定)vscode的安装与配置1.1 下载安装1.2 用户配置和常用插件 2. C/C环境配置3. git配置4. MySQL配置5. Java环境配置 0. 前言 本篇博客主要介绍Ubuntu24.04中的开发环境等配置。 1. 宇宙最强编辑器(暂定&am…

在大模型AI的下一个战场,为中小创新企业重构竞争格局

麦肯锡预计到2030年前,AI有望为全球经济贡献25.6万亿美元的价值,其中生成式AI的贡献高达7.6万亿美元。自2023年“百模大战”以来,基础大模型的“战事”已经进入尾声,大模型正在“卷向”产业和行业,越来越多的创新企业正…

【每日刷题】Day58

【每日刷题】Day58 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼​​​​​​​ 1. 3038. 相同分数的最大操作数目 I - 力扣(LeetCode) 2. 868. …

24年北京网安大会是AI驱动安全?还是驱动安全股票全员下跌?

AI驱动安全,网安一哥疯狂转发 吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 2024年6…

Vue --关于传递参数

多参数传递的两种方法: 第一种:params方法(此方法传递不会在URL路径中显示拼接) 传递参数: this.$router.push({name: "home",params:{key:1} })接收参数: created() {// 获取参数console.log…

whistle手机抓包

环境:whistle:2.9.59 whistle手机抓包(ios可以抓小程序的包;安卓机不能抓小程序的包,但是小程序的有开发者工具就够用了) 以安卓手机为例(手机跟电脑要连同一个wifi) 1.电脑安装w…

香港优才计划线上申请10大步骤,2024年流程截图,diy照做就可以

我是糖爸,已获批香港优才。10个步骤申请香港优才真的很简单,因为现在入境处只接受线上申请啦,你自己上传资料就可以,找中介也是你自己准备资料给他帮忙上传,何不自己动手上传呢,省个几万。 10大步骤分别是&…

2024年【起重机司机(限桥式起重机)】考试试卷及起重机司机(限桥式起重机)证考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年【起重机司机(限桥式起重机)】考试试卷及起重机司机(限桥式起重机)证考试,包含起重机司机(限桥式起重机)考试试卷答案和解析及起重机司机(限桥式起重机)证考试练习。安全生产模拟考试一点通结合国家…

fastadmin按钮级别权限控制实现

1.菜单规则得存在。 2.html代码增加对应控制 3.js代码增加对应路由标志 <div class"panel panel-default panel-intro"><div class"panel-heading">{:build_heading(null,FALSE)}<ul class"nav nav-tabs" data-field"sta…

numpy入门笔记

学习参考&#xff1a; 菜鸟教程 numpy入门博客 numpy入门视频 NumPy安装 默认情况使用国外线路&#xff0c;国外太慢&#xff0c;我们使用清华的镜像 pip3 install numpy scipy matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple一、创建数组 numpy.array(object, dt…