【谈一谈】docker-compose的前世今生以及怎么部署实战

【谈一谈】docker-compose的前世今生以及怎么部署实战

时间就像海绵里的水,只要愿意挤,总是有的

忙碌的工作中,趁着系统启动的短暂片刻间,我写一下最近使用到的一个技术,感觉对大家也挺有用

废话不多说,我们直接亮剑!哈哈哈!~

在这里插入图片描述

本文总纲:

万变不离其宗,我们首先看 总纲整体 的概念,方能决胜 千里之外 !!!

在这里插入图片描述

1.docker-compose的进化史

我们在学习一个知识或者概念时候,我都建议 去看看 关于它的历史! 为什么 ??因为知己知彼方能 百战不殆 !!!(不装逼,就是能更好的吸收理解!)

好,我们首先看下图,你会问这大胡子大叔是谁啊?他就是docker-compose的负责主导开发Solomon Hykes ,也是docker的创始人之一(牛逼轰轰的人物!哈哈哈)以及他的docker公司内部进行研发的一个项目

  • 这个docker-compose首次公开 是在2014年
  • 一开始这个docker-compose名字叫做fig,是一个独立的 开源项目
  • 因为其可以采用一个yml文件来定义 整个 应用服务栈,大大简化用户管理和运维成本,所以就越来越多的人使用
  • 一旦人多了嘛!docker公司也发现了( 最重要 的还好用嘞!),就将这个fig项目赋予 正宫娘娘 身份,成为官方工具集一部分

在这里插入图片描述

2.docker-compose安装及部署

我们看了它的发展史,那我们 聊一聊 怎么安装部署呢? —> 主要 两种方式 :(我这里只介绍Linux系统的安装方式哈!~)

(对于Windows系统,通常使用的是Docker Desktop,而这通常Docker Compose已经被包含在里面了,不需要去安装部署了,所以就 洒洒水 啦!~哈哈哈!)

  1. 直接下载二进制文件部署(推荐)
  2. 使用pip安装(不能翻墙,用国内网推荐)

1.直接下载二进制文件部署

如果有梯子啥的,我还是推荐使用官网命令进行直接下载二进制文件部署

1.进入指定的路径:

我们要把二进制文件放在此目录下:

 cd /usr/local/bin/

在这里插入图片描述

2.获取版本号并部署

直接获取最新二进制文件

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose    

获取对应的版本号:(可以不看)

##当中的version是要替换的
sudo curl -L "https://github.com/docker/compose/releases/download/VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

##如  VERSION 替换为 1.26.2  就下载1.26.2  版本
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

下载完我们会看到一个文件如下图所示:

在这里插入图片描述

3.赋予执行权限

运行下面命令,这个 一定要 运行哈!~

这步操作是 确保 你能够执行docker-compose命令的!!!你要非要酱,那就 运行不了 ,哈哈哈!~

sudo chmod +x /usr/local/bin/docker-compose
4.验证安装
docker-compose --version

如果按照上述的结果操作的话,沃恩会看到如下图的结果:(表明 安装成功 !~)

在这里插入图片描述

2.采用PIP命令安装

使用pip命令安装是比较传统的方法,也是上述你说不能访问外网的 首推之选

好了,我们一起看安装步骤吧!~(也是有两种)

  1. python2安装
  2. Python3安装

为什么能使用Python安装? 你是不是有这样的疑问? 其实我们去看它开源项目,我们就会知道,docker-compose本身就是一个Python程序(是不是一语惊醒梦中人!~哈哈哈)

1.Python2安装docker-compose
  • 一般不推荐使用Python2直接进行安装,因为我们知道Python2已经不再维护和更新
  • 当然你的Linux版本非常老的话,我还是很建议的哈!~
# 更新pip到最新版本(如果需要)
pip install --upgrade pip

# 安装docker-compose
pip install docker-compose
2.Python3安装docker-compose

这个推荐使用哈!~

# 更新pip3到最新版本(如果需要)
pip3 install --upgrade pip

# 安装docker-compose
pip3 install docker-compose
3.验证安装(这一步一定要做!!)

避免返工检查,别问我为啥子,

因为有个心高气傲过度自信的博主我已现身说法啦!~(一枚妥妥的 冤种 )

docker-compose --version

好了,既然安装好了,我们说说怎么去实践和应用吧!~

3.DOCKER-COMPOSE的实战

我始终认为 以练带学 ,是最好上手的和快速成长的方式,来,让我们一起 更优秀 吧!~

前提:

你已经安装好docker-compose

实战目标:

  • 第1个服务: 部署一个基于Python Flask的简单Web应用,
  • 第2个服务: 该应用连接到一个MySQL数据库。
  • 使用Docker Compose来管理这 两个服务Web应用和MySQL数据库)

1.创建目录结构

  • 新建一个目录,比如叫compose_proj,并在该目录下创建两个子目录,
  • 分别命名为webdb,用于存放两个服务: Web应用和数据库的Docker配置文件 (dockerfile)

在这里插入图片描述

2.创建两个服务的dockerfile文件

1.编写web应用的DOCKERFile文件

compose_proj/web目录下,创建一个Dockerfile,内容如下:

# 使用官方的Python运行时作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 将当前目录内容复制到容器的/app中
COPY . /app

# 安装所需的包
RUN pip install --trusted-host pypi.python.org flask mysql-connector-python

# 暴露端口
EXPOSE 5000

# 定义启动命令
CMD ["python", "app.py"]

创建app.py也是在compose_proj/web目录下】

  1. ,创建一个简单的Flask应用app.py
  2. 目的是为了用于连接数据库并展示数据
from flask import Flask
from mysql.connector import connect, Error

app = Flask(__name__)

@app.route('/')
def hello_world():
    try:
        with connect(
            host='db',
            user='root',
            password='password',
            database='example'
        ) as connection:
            cursor = connection.cursor()
            cursor.execute("SELECT 'Hello, Docker Compose!'")
            result = cursor.fetchone()
            return result[0]
    except Error as e:
        return str(e)

if __name__ == '__main__':
    app.run(host='0.0.0.0')

如下图所示

!

2.编写mysql数据库

这边很简单没啥要操作的 (这里我们啥都不做, 直接第三步 )为啥? 第三步 有解释哈 ~哈哈哈!

  • 在此目录下,原本需要Dockerfile,或者直接创建一个docker-compose.yml文件来定义MySQL服务。
  • 这里我们先不做,稍后会统一在项目根目录创建一个总的docker-compose.yml文件来 管理两者

3.编写docker-compose.yml【核心】

compose_example目录下,创建一个docker-compose.yml文件,用于定义这两个服务:(这一步很重要哈!灵魂一步! )

两个服务:webdb

  • web服务通过build指令指向了之前创建的web目录下的Dockerfile
  • db服务直接使用了官方的MySQL镜像,并设置了环境变量来配置数据库。(这就明白了为啥mysql数据库服务那步为啥我们 啥都没做了吧 )
version: '3.0'

services:
  web:
    build: ./web
    ports:
      - "5000:5000"
    depends_on:
      - db

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: compose_test
    volumes:
      - dbdata:/var/lib/mysql

volumes:
  dbdata:

好了,上述步骤我饿们完成了,接下来我们就是直接运行了

4.启动服务

注意! 启动服务,一定要在`compose_proj`目录下!一定要在`compose_proj`目录下!!一定要在`compose_proj`目录下!!!(重要的话说三遍!!!)

下述命令会构建Web应用的镜像(如果尚未构建),拉取MySQL镜像,并在后台启动这两个服务

docker-compose up -d

5.验证服务

  • 打开浏览器,访问http://localhost:5000
  • 能看到Hello, Docker Compose!的输出,表明Web应用已经成功连接到MySQL数据库并返回了数据。

这也表明你已经成功完成docker-compose的实战应用,完结撒花!!!

完结

好了,看到这里,说明你是一个很优秀的人

我也相信你也一定是收益匪浅吧!感觉有收获的,欢迎大大们点赞收藏啊!哈哈哈!

在这里插入图片描述

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值