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

一、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-composechmod +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 的名称,默认为 Dockerfileports:- "host_port:container_port" # 端口映射environment: # 环境变量VAR_NAME: valuevolumes: # 数据卷挂载- host_path:container_path # 主机路径:容器路径networks: # 网络配置- network_namedepends_on: # 依赖服务- service_name_2restart: always # 重启策略command: # 覆盖容器启动命令- your-command- hereservice_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: alwayscontainer_name: mes-gatewayimage: mes-gateway:1.0.1ports:- 8080:8080volumes:- ./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-gatewaynetworks:- mesnetworkmes-auth:restart: alwayscontainer_name: mes-authimage: mes-auth:1.0.1ports:- 9200:9200volumes:- ./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-authnetworks:- mesnetworknetworks: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.mzph.cn/pingmian/23361.shtml

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

相关文章

【微机原理及接口技术】中断系统

【微机原理及接口技术】中断系统 文章目录 【微机原理及接口技术】中断系统前言一、中断概述中断的基本概念中断处理过程 二、8086/8088中断系统中断类型中断响应过程中断向量表内部中断服务程序 总结 前言 本篇文章我们会讲到中断的概述,8086/8088中断系统。 一、…

bootstrap5-学习笔记3-文字格式+表格+徽章

参考: Bootstrap5 教程 | 菜鸟教程 https://www.runoob.com/bootstrap5/bootstrap5-tutorial.html Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 https://v5.bootcss.com/docs/getting-started/introduction/ 之前用bootstrap2和3比较多&#x…

微软云计算Windows Azure(三)

目录 五、Windows Azure Marketplace六、Windows Azure服务平台(一)网站(二)虚拟机(三)云服务(四)移动服务(五)大数据处理(六)媒体支持…

点赋科技:在招聘会上绽放光彩,助力青春梦想起航

在近日举行的青年企业家协会招聘会暨长江大学就业实习双选会上,点赋科技以其独特的魅力和强大的实力吸引了众多求职者的关注。 点赋科技的展位前人头攒动,公司的招聘团队热情地与每一位求职者交流。他们详细介绍了公司的发展历程、业务范围、企业文化以及…

LeetCode-704. 二分查找【数组 二分查找】

LeetCode-704. 二分查找【数组 二分查找】 题目描述:解题思路一:注意开区间和闭区间背诵版:解题思路三: 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target &#xf…

杨校老师项目之基于52单片机的霍尔自行车码表【嵌入式】

获取全套资料: 有偿获取:mryang511688 技术:C语言、单片机等 摘要: 本项目基于单片机设计了一款霍尔自行车码表。该系统实现了骑行过程中即时显示行驶速度、行径里程、显示当前时刻以及超速危险报警等功能。有助于骑行者在骑行过…

“解锁财富新密码:订单共享商业模式的革命性力量“

在当前的商业环境中,创新和效率是企业生存和发展的关键。今天,我们向您介绍一种革命性的商业模式——订单共享商业模式,它正在改变企业家们对新零售的理解和实践。 订单共享商业模式,是一种通过整合和优化不同商家的订单资源&…

从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件

文章目录 从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件准备工作:Node.js和npm国内镜像加速下载初始化你的Electron项目创建你的Electron应用运行你的Electron应用为你的应用设置图标打包成EXE文件结语 从零开始:如何用Electron将…

【动手学深度学习】使用块的网络(VGG)的研究详情

目录 🌊1. 研究目的 🌊2. 研究准备 🌊3. 研究内容 🌍3.1 多层感知机模型选择、欠拟合和过拟合 🌍3.2 练习 🌊4. 研究体会 🌊1. 研究目的 理解块的网络结构;比较块的网络与传统…

Qt如何让按钮的菜单出现在按钮的右侧

直接上代码,我们用到了一个eventfilter的函数功能。这个函数比较厉害和重要,大家务必经常拿出来看看。 void MainWindow::initMenu() { QMenu* menuLiXiang new QMenu; QAction* actXiangMuZhangCheng new QAction("项目章程"); …

【Cesium4UE】使用问题及解法统计

本期作者:尼克 易知微3D引擎技术负责人 1.加载3dtiles模型很慢 1.3dtiles是否做了重建顶层处理。如果3dtiles的tiles块太多使用CesiumLab重建顶层。 2.将3dtiles模型放置到固态硬盘中 3.如果有多块3dtiles,考虑使用CesiumLab合并3dtiles处理 4.如果不需…

OSG天空图代码

osgEarth // 创建天空选项osgEarth::Util::SkyOptions skyOptions;// 设置天空的坐标系统(可选)skyOptions.coordinateSystem() osgEarth::Util::SkyOptions::COORDSYS_ECEF;// 设置一天中的小时数(可选)skyOptions.hours() 12.…

基于springboot实现社区养老服务系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现社区养老服务系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生,其可以帮助…

Al2O3/SiC纳米复相陶瓷力学性能显著提升 我国研究机构数量较多

Al2O3/SiC纳米复相陶瓷力学性能显著提升 我国研究机构数量较多 Al2O3/SiC纳米复相陶瓷,是以氧化铝(Al2O3)为基体相,以纳米碳化硅(SiC)为第二相,将第二相纳米颗粒弥散进入基体相,经高…

Google Inventor一款适合儿童的趣味APP编程开发平台

Google Inventor 其实是指 App Inventor,这是由 Google 开发并由麻省理工学院(MIT)继续维护和发展的一个应用程序开发平台。 App Inventor 的主要特点和用途如下: 什么是 App Inventor? App Inventor 是一个基于 W…

uni-app基础框架搭建(vue3+ts+vite)

1.基础准备 uni-app官网uni-app,uniCloud,serverless,环境安装,创建uni-app,自定义模板,国内特殊情况,更新依赖到指定版本,运行、发布uni-app,运行并发布快应用,运行并发布快应用(webview),运行并发布快应用(webview)-华为,cli创建项目和HBuilderX可视化界面创https://uniapp.…

中科数安 | 透明加密防泄密系统!如何有效防止企业内部核心数据资料外泄?

中科数安提供的透明加密防泄密系统是一种专为企业设计的数据保护解决方案,它通过以下关键特性有效防止企业内部核心数据资料外泄: PC地址:——www.weaem.com 自动智能透明加密:系统能够在操作系统级别无缝集成,对指定类…

AC/DC电源模块:跟踪技术的创新之选

BOSHIDA AC/DC电源模块:跟踪技术的创新之选 AC/DC电源模块是一种将交流电转换为直流电的设备,广泛应用于各个领域的电子设备中。随着现代科技的发展,对电子设备的要求越来越高,需要能够提供更稳定、更高效的电源。AC/DC电源模块…

从零开始写 Docker(十七)---容器网络实现(中):为容器插上”网线“

本文为从零开始写 Docker 系列第十七篇,利用 linux 下的 Veth、Bridge、iptables 等等相关技术,构建容器网络模型,为容器插上”网线“。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实…

BERT应用——文本间关联性分析

本文结合了自然语言处理(NLP)和深度学习技术,旨在分析一段指定的任务文本中的动词,并进一步探讨这个动词与一系列属性之间的关联性。具体技术路径包括文本的词性标注、语义编码和模型推断。 一、技术思路 NLP和词性标注 在自然…