当前位置: 首页 > article >正文

环境搭建——docker-compose搭建

1.Docker 的作用

1.什么是 Docker?

        Docker 是一个开源的容器化平台,可以帮助我们快速部署和管理应用程序。简单来说,它就像一个“打包箱”,把程序运行所需的一切打包在一起(包括代码、依赖库、运行环境等),放到任何一台电脑或服务器上都可以直接运行,而不用担心环境不兼容的问题。

2.Docker 在 IM 项目中的作用

        在 IM 项目中,我们需要用到很多中间件,比如数据库(MySQL、Redis)、消息队列(Kafka、RabbitMQ),还有后端服务和前端项目。这些中间件通常都需要复杂的安装和配置工作,而 Docker 的主要作用是 简化这些部署操作

为什么使用 Docker?

  1. 避免环境差异:
    开发环境和生产环境可能会有很大的不同,比如不同版本的操作系统或依赖库。而 Docker 提供了一个一致的运行环境,解决了“在我电脑上可以运行,换到服务器上就不行”的问题。

  2. 节省时间:
    使用 Docker,我们可以通过一条命令快速启动所需的中间件,而不需要逐步手动安装。

  3. 便于维护:
    如果我们需要升级中间件或者迁移项目,只需修改 Docker 配置文件,其他操作几乎不用改动。

  4. 提高效率:
    Docker 可以让所有团队成员的开发环境保持一致,避免配置不当导致的功能失效。

3.举个例子:传统方式 vs Docker

假设我们需要在 IM 项目中使用 MySQL 数据库:

  • 传统方式:

    1. 下载 MySQL 安装包。

    2. 按步骤安装 MySQL,配置用户名、密码。

    3. 手动启动 MySQL 服务,并检查是否可以正常使用。

    问题:
    传统安装方式需要关注很多细节,比如操作系统兼容性、文件路径配置等。一旦有一步出错,就可能导致无法运行。

  • 使用 Docker:

    1. 编写一段简单的配置文件,定义 MySQL 的版本和初始配置。

    2. 使用 Docker 一键启动,MySQL 直接可以运行。

    优势:

    • 简单快速: 几分钟内完成部署。
    • 容易扩展: 如果需要多个 MySQL 实例,只需调整配置即可。
    • 可移植性: 换到其他服务器上,只需要复制配置文件。

总结

        Docker 是一种非常高效的工具,能够让中间件的部署变得简单、快捷,同时也大幅降低了出错的可能性。在 IM 项目中,Docker 的核心作用就是:简化部署、保证环境一致性、节省时间

2.购买和设置服务器

        在使用 Docker 部署 IM 项目前,我们需要先准备一个服务器。服务器是项目运行的基础,就像家用电器需要插座一样,我们的程序需要一个稳定的环境来运行。

1. 为什么需要服务器?

本地电脑虽然可以运行程序,但它有以下问题:

  1. 不稳定: 如果你的电脑关机或断网,程序就无法运行。而服务器可以 24 小时不间断运行。
  2. 访问限制: 本地电脑的 IP 地址是动态的,别人无法通过固定的地址访问程序。服务器有固定的公网 IP,可以让其他人随时访问。
  3. 性能需求: IM 项目需要运行多个中间件,本地电脑可能性能不足,而服务器的配置通常更高。

因此,我们需要购买一台云服务器,用来部署和运行我们的项目。

2. 购买服务器

推荐平台:
        市面上有很多提供云服务器的厂商,比如腾讯云、阿里云、华为云等。这里以 腾讯云 为例,讲解如何购买服务器。

购买步骤:

  1. 登录腾讯云官网
    打开 腾讯云官网,注册一个账号。如果已有账号,直接登录。

  2. 选择服务器类型

    • 地域选择: 选择靠近你的用户的地域,比如中国大陆用户可以选择“华北”或“华东”地区。
    • 配置选择: 根据项目的需求,选择合适的配置(比如 2 核 CPU、4G 内存、50G 硬盘)。
      • 小提示: 一开始可以选择较低的配置,后续可以随时升级。
  3. 操作系统选择:

    • 选择 Linux 系统,推荐使用 CentOS 7.9(稳定、适合 Docker 部署)。
  4. 购买时长:

    • 一般建议按月购买,先尝试使用,后续可以续费或调整配置。
  5. 支付订单:
    填写完所有配置后,确认订单并完成支付。

3. 设置登录方式

为什么要设置登录方式?
        服务器默认需要用户名和密码登录,但这既不安全也不方便。为了更安全快速地登录,我们使用 密钥登录(基于公钥和私钥的方式)。

密钥登录原理:

  • 服务器生成一对密钥:公钥私钥
  • 公钥 存放在服务器上,私钥 存放在你的本地电脑上。
  • 当你登录时,服务器会通过公钥和私钥配合,验证你的身份,避免使用密码。

设置步骤:

  1. 生成密钥对:

    • 在购买服务器时,选择“使用密钥登录”。
    • 点击“新建密钥对”,会自动生成一对密钥。
    • 保存私钥文件: 私钥文件(.pem 格式)会下载到你的电脑,请妥善保存。
  2. 绑定密钥到服务器:
    购买完成后,腾讯云会自动将公钥绑定到你的服务器。

4. 使用 Xshell 登录服务器

Xshell 是什么?
        Xshell 是一款终端工具,用来连接服务器,执行各种操作。简单来说,它是你和服务器之间的“遥控器”。

登录步骤:

  1. 下载并安装 Xshell:
    到官网 Xshell 下载页面 下载并安装。

  2. 新建会话:

    • 打开 Xshell,点击“新建会话”。
    • 在“主机”一栏,输入你的服务器公网 IP 地址(可在腾讯云控制台查看)。
    • 在“用户名”一栏,输入 root(Linux 系统的默认管理员账号)。
    • 在“连接方式”中选择“密钥”。
  3. 配置密钥:

    • 点击“浏览”,选择刚刚保存的私钥文件。
    • 如果密钥文件受密码保护,需要输入对应的密码。
  4. 连接服务器:
    点击“确定”,然后点击“连接”。如果一切顺利,你会看到类似以下内容的欢迎界面:

    Welcome to CentOS Linux 7
    

5. 总结

        到这里,你已经成功购买并登录到一台云服务器。服务器就像是我们项目的“家”,接下来,我们将在这台服务器上配置 Docker 环境,让它具备部署中间件的能力。

3.配置 Docker 环境

        接下来我们要配置 Docker 环境。Docker 是一个非常流行的工具,可以用来快速部署和运行程序。

1. 什么是 Docker?

        Docker 是一种容器化技术,可以帮助你将程序和它的运行环境打包到一个“容器”中。这个容器就像是一个小型虚拟机,里面包含了运行程序所需的所有东西(代码、库、依赖等)。
Docker 的好处是:

  1. 运行环境一致: 不管在你的电脑、服务器,还是其他地方运行,效果都是一样的。
  2. 部署快: 一条命令就可以启动一个程序。
  3. 资源利用高: 比传统虚拟机更轻量,占用资源少。

2. 安装 Docker

为什么需要安装 Docker?

        因为 Docker 是我们项目的核心工具,用来运行各种中间件(比如 MySQL、Redis 等)。安装 Docker 是项目启动的第一步。

步骤 1:阿里云镜像源

直接通过官方源安装 Docker 可能会比较慢,所以我们先使用阿里云提供的加速镜像源。
输入以下命令:

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

解释:

  • yum-config-manager 是 CentOS 中管理软件源的工具。
  • --add-repo 是添加一个新软件源的命令。
  • 后面的 URL 是阿里云的 Docker 软件源地址。

这个操作会告诉系统,从阿里云下载 Docker,速度更快。

步骤 2:安装 Docker

执行以下命令,正式安装 Docker:

yum install -y docker-ce

解释:

  • yum 是 CentOS 的包管理工具,用来安装和管理软件。
  • install 表示安装软件。
  • -y 表示自动回答“是”,不用每一步都手动确认。
  • docker-ce 是 Docker 的社区版本(Community Edition)。

这个命令会下载并安装 Docker 的最新版本。

步骤 3:启动 Docker 服务

安装完成后,需要启动 Docker 服务才能使用。运行以下命令:

service docker start

解释:

  • service 是用来管理系统服务的命令。
  • docker 是服务的名字。
  • start 表示启动服务。

启动后,你的服务器就可以运行 Docker 容器了。

步骤 4:设置开机自启

为了避免服务器重启后 Docker 停止工作,我们需要设置 Docker 开机自启:

chkconfig docker on

解释:

  • chkconfig 是用来管理服务是否开机自启的工具。
  • docker 是服务名字。
  • on 表示开启开机自启。

3. 测试 Docker 是否安装成功

输入以下命令检查 Docker 是否正常安装:

docker version

解释:

  • 这个命令会显示 Docker 的版本信息。
  • 如果看到类似以下输出,说明 Docker 安装成功:
    Client: Docker Engine - Community
     Version: 20.xx.xx
     API version: 1.xx
    

4. 设置国内镜像加速

Docker 从国外拉取镜像(程序的运行环境)时可能会比较慢,所以我们需要配置国内镜像加速。

步骤 1:编辑配置文件

执行以下命令,打开 Docker 的配置文件:

vi /etc/docker/daemon.json

解释:

  • /etc/docker/daemon.json 是 Docker 的配置文件,里面可以设置镜像源等参数。

步骤 2:添加以下内容

按下 i 键进入编辑模式,粘贴以下内容:

{
    "registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
    "live-restore": true
}

解释:

  • "registry-mirrors":指定 Docker 从哪个镜像源拉取镜像,这里使用腾讯云的加速镜像。
  • "live-restore":设置为 true,表示当 Docker 服务停止时,容器依然可以继续运行。

编辑完成后,按下 Esc 键退出编辑模式,输入 :wq 保存并退出。

步骤 3:重启 Docker

修改完配置后,需要重启 Docker 服务让配置生效:

systemctl daemon-reload
service docker restart

解释:

  • systemctl daemon-reload:重新加载配置文件。
  • service docker restart:重启 Docker 服务。

步骤 4:验证镜像加速是否生效

输入以下命令查看 Docker 信息:

docker info

在输出中找到以下字段:

Registry Mirrors:
 https://mirror.ccs.tencentyun.com/

如果显示了加速器地址,说明镜像加速配置成功。

4.安装 Docker Compose

        在完成 Docker 的安装后,我们需要安装 Docker Compose。这是一个工具,可以通过一个配置文件(docker-compose.yml)来一次性启动多个容器,非常适合用来管理复杂的项目环境,比如我们这个 IM 项目。

1. 什么是 Docker Compose?

        Docker Compose 是 Docker 的一个补充工具,用来管理多个容器的运行。它可以让你通过一个配置文件描述项目中需要用到的所有服务,以及它们之间的依赖关系,比如:

  • 启动 MySQL 数据库容器
  • 启动 Redis 缓存容器
  • 启动 Web 应用容器

只需要一条命令,就可以轻松地同时启动这些服务,而不需要逐个启动。

总结:Docker 管理单个容器,而 Docker Compose 管理多个容器。

2. 为什么需要安装 Docker Compose?

  • 简化管理:如果我们用手动命令来启动多个容器,过程会非常繁琐,容易出错。
  • 便于维护:通过 docker-compose.yml 文件,团队成员可以快速复现同样的环境。
  • 自动处理依赖:比如 Web 服务需要先启动数据库,Docker Compose 会帮你自动处理这些顺序。

3. 安装 Docker Compose

步骤 1:切换到目标目录

        我们需要将 Docker Compose 安装到 /usr/local/bin,这个目录是 Linux 系统中放置可执行文件的地方。输入以下命令切换目录:

cd /usr/local/bin

解释:

  • cd 是“change directory”的缩写,用来切换工作目录。
  • /usr/local/bin 是系统的路径目录,存放全局命令,这样我们就可以直接使用 docker-compose

步骤 2:上传安装文件

我们需要将 Docker Compose 的安装文件上传到服务器。这里用到了 rz 命令(如果没有安装 rz,需要先安装 yum install lrzsz)。

运行以下命令启动文件上传工具:

rz

解释:

  • rz 是一种文件传输工具,可以从本地电脑上传文件到服务器。
  • 在执行命令后,会弹出一个文件选择窗口,从本地选择 docker-compose 安装文件上传到服务器。

上传成功后,你会看到文件已经出现在 /usr/local/bin 目录下。

步骤 3:赋予执行权限

为了让 docker-compose 可以被执行,我们需要为它赋予可执行权限。运行以下命令:

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

解释:

  • chmod +x 是用来为文件添加执行权限的命令。
  • /usr/local/bin/docker-compose 是我们刚刚上传的文件。

执行完这个命令后,docker-compose 就变成了一个可执行程序。

步骤 4:检查安装是否成功

输入以下命令查看 Docker Compose 的版本信息,验证是否安装成功:

docker-compose --version

解释:

  • 这个命令会显示 Docker Compose 的版本号。如果能看到类似以下内容,说明安装成功:
    docker-compose version 1.29.2, build 5becea4c
    

5.部署服务容器

        在完成 Docker 和 Docker Compose 的安装与测试后,接下来是利用 Docker Compose 部署 IM 项目所需的服务容器。这一步是项目环境搭建的核心,通过合理的配置文件和命令,将所有服务容器化,形成一个整体的运行环境。

1. 定义 Docker Compose 配置文件

操作步骤:

  1. 进入项目目录:

    cd /path/to/your/project
    

    原因: 确保 docker-compose.yml 文件保存在项目根目录中,方便管理和启动服务。

  2. 创建 docker-compose.yml 文件:

    vi docker-compose.yml
    

    原因: docker-compose.yml 是定义服务容器的核心文件,所有需要启动的容器信息都写在这里。

  3. 编辑配置文件: 根据 IM 项目需要的服务,例如数据库、后端服务、前端服务等,编写以下内容:

    示例配置:

    version: '3.8'
    services:
      db:
        image: mysql:8.0
        container_name: im_mysql
        environment:
          MYSQL_ROOT_PASSWORD: rootpassword
          MYSQL_DATABASE: im_database
          MYSQL_USER: im_user
          MYSQL_PASSWORD: im_password
        ports:
          - "3306:3306"
        volumes:
          - db_data:/var/lib/mysql
        networks:
          - im_network
    
      backend:
        image: openjdk:17
        container_name: im_backend
        ports:
          - "8080:8080"
        volumes:
          - ./backend:/app
        working_dir: /app
        command: ["java", "-jar", "im-backend.jar"]
        depends_on:
          - db
        networks:
          - im_network
    
      frontend:
        image: node:16
        container_name: im_frontend
        ports:
          - "3000:3000"
        volumes:
          - ./frontend:/app
        working_dir: /app
        command: ["npm", "start"]
        networks:
          - im_network
    
    volumes:
      db_data:
    
    networks:
      im_network:
        driver: bridge
    

配置解读:

  • version: '3.8':指定 Docker Compose 的版本。
  • services:定义服务,每个服务代表一个容器:
    • db:MySQL 容器,提供数据库服务。
    • backend:后端服务容器,运行 Java 程序。
    • frontend:前端服务容器,运行 Node.js 项目。
  • depends_on:确保服务启动的顺序,例如后端依赖数据库。
  • networks:让所有服务共享同一个网络,便于容器间通信。

2. 启动服务

操作步骤:

  1. 一键启动服务:

    docker-compose up -d
    

    原因:

    • docker-compose up 启动所有在 docker-compose.yml 文件中定义的服务。
    • -d 表示以后台模式运行,不占用终端。
  2. 检查服务运行状态:

    docker ps
    

    原因: 确保所有服务都处于 Up 状态。

3. 验证服务是否正常运行

数据库验证:

  1. 进入 MySQL 容器:
    docker exec -it im_mysql mysql -u root -p
    
    输入 rootpassword 登录 MySQL。
  2. 查看数据库是否创建成功:
    SHOW DATABASES;
    

后端服务验证:

  1. 在浏览器中访问:
    http://<服务器IP>:8080
    
    原因: 检查后端服务是否正确启动,是否返回预期的 API 或页面。

前端服务验证:

  1. 在浏览器中访问:
    http://<服务器IP>:3000
    
    原因: 检查前端页面是否正确显示,是否能与后端通信。

4. 停止和重启服务

停止所有服务:

docker-compose down

原因: 停止服务并释放资源。

重启所有服务:

docker-compose up -d

原因: 恢复服务运行状态,所有配置和数据依然保留。

        通过以上步骤,我们已经成功利用 Docker Compose 部署了 IM 项目所需的服务容器。如果需要添加更多的服务,只需修改 docker-compose.yml 文件即可,整个过程高效且便捷。


http://www.kler.cn/a/502958.html

相关文章:

  • GCC安全编译选项
  • 基于 FastExcel 与消息队列高效生成及导入机构用户数据
  • 【Docker】Docker部署多种容器
  • Linux第二课:LinuxC高级 学习记录day02
  • 《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》
  • pytorch小记(七):pytorch中的保存/加载模型操作
  • 深入理解 Java 设计模式之策略模式
  • 简单组合逻辑
  • 【机器学习】神经网络(BP算法)含具体计算过程
  • <C++学习>C++ std 多线程教程
  • git仓库中提交上去了.idea文件夹内容怎么办?
  • E12.【C语言】练习:求两个数的最大公约数
  • 新时期下k8s 网络插件calico 安装
  • 服务器登陆后有java变量
  • unity打包sdk热更新笔记
  • 氧化铌在光学领域的独特贡献与应用拓展-京煌科技
  • Android Room 报错:too many SQL variables (code 1 SQLITE_ERROR) 原因及解决方法
  • 【Qt】QWidget核心属性2(windowOpacity、cursor、font、toolTip、focusPolicy、styleSheet)
  • Vue2:el-table 最后一列的操作按钮不换行,按钮过多时展示【更多】
  • 掌握 React 关键:理解 super () 和 super (props) 的不同应用