Docker 初学者指南 — 如何使用 Docker-Compose 创建客户端/服务器端

您是一名开发人员并且想探索 docker-compose?这篇文章是为你而写的。在对 Docker-Compose 进行简短介绍后,您将能够使用 Docker 创建您的第一个客户端/服务器端应用程序。

注意:本文考虑到您了解 Docker 的基础知识。如果没有,请不要惊慌!我建议您阅读我的第一篇文章来了解 Docker 并学习如何创建您的第一个应用程序。

Docker 初学者指南 — 如何创建您的第一个 Docker 应用程序:如果您是开发人员并且想从 Docker 开始?这篇文章是为你而写的。

什么是 Docker-Compose?

Docker-Compose 是 Docker 提供的一个工具。为简单起见,实施此工具是为了解决项目中的架构问题。

您可能已经在我之前的文章中注意到,我们创建了一个显示“Docker is magic!”的简单程序。当它推出时。

不幸的是,当您是一名开发人员时,您很少会创建一个独立的程序(一个不需要任何其他服务即可运行的程序,例如数据库)。

但是,您如何知道是否需要 Docker-Compose?它非常简单——如果您的应用程序需要运行多个服务,您就需要这个工具。例如,如果您创建一个需要连接到您的数据库以验证用户身份的网站(这里有 2 个服务,网站和数据库)。

Docker-compose 为您提供了在单个命令中启动所有这些服务的可能性。

Docker 和 Docker-Compose 之间的区别

Docker 用于管理应用程序的单个容器(服务)。

Docker-Compose 用于为同一个应用程序同时管理多个容器。此工具提供与 Docker 相同的功能,但允许您拥有更复杂的应用程序。

Docker(单个容器)VS Docker-Compose(多个容器)

一个典型的用例

该工具可以变得非常强大,并允许您非常快速地部署具有复杂架构的应用程序。我会给你一个具体的案例研究,证明你需要它。

想象一下,您是您的网络软件的骄傲创造者。

您的解决方案提供了两个网站。第一个允许商店只需点击几下就可以创建他们的在线商店。第二个致力于客户支持。这两个站点与同一个数据库交互。

你开始成功了,你的服务器已经不够用了。因此,您决定将整个软件迁移到另一台机器上。

不幸的是,您没有使用 docker-compose。因此,您将不得不一个接一个地迁移和重新配置您的服务,希望没有遗漏任何内容。

如果您使用了 docker-compose,只需几个命令,您就可以在新服务器上部署整个架构。您现在要做的就是进行一些配置并加载数据库备份以完成迁移。

现在让我们使用 Docker-Compose 创建您的第一个客户端/服务器端应用程序

现在您知道 docker-compose 的用途了,是时候创建您的第一个客户端/服务器端应用程序了!

本教程的目的是用 Python 创建一个包含句子的小型网站(服务器)。这句话必须由将显示该句子的 Python 程序(客户端)检索。

注意:本教程考虑到您已经在计算机上安装了 Docker 并且具备基础知识。如果不是这种情况,请您参考我之前的文章

1. 创建你的项目

要创建您的第一个客户端/服务器应用程序,我邀请您在您的计算机上创建一个文件夹。它必须在根目录中包含以下文件和文件夹:

  • 一个docker-compose.yml文件(包含创建不同服务的必要说明的 docker-compose 文件)。

  • 一个server文件夹(此文件夹将包含设置服务器所需的文件)。

  • 一个client文件夹(此文件夹将包含设置客户端所需的文件)。

通常你应该有这个文件夹架构:

.
├── client/
├── docker-compose.yml
└── server/2 directories, 1file

2. 创建你的服务器

为了开始提醒 Docker 的基础知识,我们将从创建服务器开始。

2.1 创建文件

移动到您的server文件夹并创建以下文件:

  • 一个server.py文件(将包含服务器代码的 python 文件)。

  • 一个index.html文件(包含要显示的句子的 html 文件)。

  • 一个Dockerfile文件(包含创建服务器环境的必要指令的 docker 文件)。

通常,您应该在以下路径中拥有此文件夹架构server/:

.
├── Dockerfile
├── index.html
└── server.py0 directories, 3 files

2.2 编辑 Python 文件

您可以将以下代码添加到文件中server.py:

#!/usr/bin/env python3

# 导入python系统库。
# 这些库将用于创建 Web 服务器。
# 你不需要安装任何特别的东西,这些库是用 Python 安装的。
import http.server
import socketserver

# 这个变量将处理我们客户端在服务器上的请求。
handler = http.server.SimpleHTTPRequestHandler

# 这里我们定义我们要在端口 1234 上启动服务器。
# 尽量记住这些信息,这对我们以后使用 docker-compose 非常有用。
with socketserver.TCPServer(("", 1234), handler) as httpd:
  # 该指令将使服务器保持运行,等待来自客户端的请求。
  httpd.serve_forever()

此代码将允许您在此文件夹中创建一个简单的 Web 服务器。它将检索index.html文件的内容以在网页上共享它。

2.3 编辑 Html 文件

您可以在文件中添加以下语句index.html:

Docker-Compose is magic!

服务器启动时会共享这个文件,并显示这句话。

2.4 编辑 Docker 文件

在这里,我们将创建一个基本的 Dockerfile,它将负责执行我们的 Python 文件。我们将使用创建的官方镜像来执行 Python。

# 请记住,dockerfile 必须始终从导入基础映像开始。
# 我们使用关键字“FROM”来做到这一点。
# 在我们的示例中,我们要导入 python 映像(来自 DockerHub)。
# 所以,我们为图像名称写'python',为版本写'latest'。
FROM python:latest

# 为了启动我们的 python 代码,我们必须导入“server.py”和“index.html”文件。
# 我们使用关键字“ADD”来做到这一点。
# 请记住,第一个参数 'server.py' 是主机上文件的名称。
# 第二个参数'/server/'是将文件放在图像上的路径。
# 这里我们将文件放在图像“/server/”文件夹中。
ADD server.py /server/
ADD index.html /server/

# 我想介绍一些新的东西,'WORKDIR' 命令。
# 此命令更改图像的基本目录。
# 这里我们定义'/server/'作为基目录(所有命令都将在这里执行)。
WORKDIR /server/

3. 创建你的客户

为了继续提醒 Docker 的基础知识,我们将创建客户端。

3.3 创建文件

移动到您的client文件夹并创建以下文件:

  • 一个client.py文件(将包含客户端代码的 python 文件)。

  • 一个Dockerfile文件(包含创建客户端环境的必要说明的 docker 文件)。

通常,您应该在以下路径“ _client / _ ”中拥有此文件夹架构:

.
├── client.py
└── Dockerfile0 directories, 2 files

3.2 编辑 Python 文件

您可以将以下代码添加到文件中client.py:

#!/usr/bin/env python3

# 导入python系统库。
# 该库用于从服务器下载“index.html”。
# 你不需要安装任何特别的东西,这个库是用 Python 安装的。
import urllib.request

# 此变量包含对“http://localhost:1234/”的请求。
# 你一定想知道 'http://localhost:1234' 是什么?
# localhost:这意味着服务器是本地的。
# 1234:记住我们将 1234 定义为服务器端口。
fp = urllib.request.urlopen("http://localhost:1234/")

# 'encodedContent' 对应于服务器响应编码('index.html')。
# 'decodedContent' 对应解码后的服务器响应(我们想要显示的内容)。
encodedContent = fp.read()
decodedContent = encodedContent.decode("utf8")

# 显示服务器文件:'index.html'。
print(decodedContent)

# 关闭服务器连接。
fp.close()

此代码将允许您获取服务器网页的内容并显示它。

3.3 编辑 Docker 文件

至于服务器,我们将创建一个基本的 Dockerfile 来负责执行我们的 Python 文件。

# 与 *server* Dockerfile 相同。
FROM python:latest

# 与 *server* Dockerfile 相同。
# 我们在 */client/* 文件夹中导入 *client.py*。
ADD client.py /client/

# 我想介绍一些新的东西,*WORKDIR* 命令。
# 此命令更改图像的基本目录。
# 这里我们定义 */client/* 为基础目录。
WORKDIR /client/

4. 回到 Docker-Compose

您可能已经注意到,我们创建了两个不同的项目,即服务器和客户端,它们都使用 Dockerfile。

到目前为止,您已经了解的基础知识没有任何变化。

现在我们要编辑docker-compose.yml存储库的根目录。

注意:Docker-Compose非常完善,本文旨在给大家一个具体的典型例子。这就是为什么您不会看到所有关键字的原因。

# docker-compose 必须始终以版本标签开头。
# 我们使用 '3' 因为它是此时的最后一个版本。
version: '3'

# 你应该知道 docker-composes 与服务一起工作。
# 1 service = 1 container.
# 比如一个服务可能,一个服务器,一个客户端,一个数据库...
# 我们使用关键字 'services' 开始创建服务。
services:
  # 正如我们一开始所说,我们要创建:一个服务器和一个客户端。
  # 那是两个服务。

  # 第一个服务(容器):服务器。
  # 这里你可以自由选择关键字。
  # 它将允许您定义服务对应的内容。
  # 我们为服务器使用关键字'server'。
  server:
    # 关键字“build”将允许您定义
    # 用于创建图像的 Dockerfile 的路径
    # 这将允许您执行该服务。
    # 这里'server/'对应的是server文件夹的路径
    # 包含要使用的 Dockerfile。
    build: server/

    # 创建图像后要执行的命令。
    # 以下命令将执行“python ./server.py”。
    command: python ./server.py

    # 记住我们在'server/server.py'中定义了1234作为端口。
    # 如果我们想从我们的计算机(容器外)访问服务器,
    # 我们必须与我们的计算机端口共享内容端口。
    # 为此,关键字 'ports' 将帮助我们。
    # 它的语法如下:[我们想要在我们机器上使用的端口]:[我们想要在容器中检索的端口]
    # 在我们的例子中,我们想在我们的机器上使用端口 1234 并且
    # 从容器中检索端口 1234(因为它在这个端口上
    # 我们广播服务器)。
    ports:
      - 1234:1234

  # 第二个服务(容器):客户端。
  # 我们为服务器使用关键字“client”。
  client:
    # 这里的'client/对应client文件夹的路径
    # 包含要使用的 Dockerfile。
    build: client/

    # 创建图像后要执行的命令。
    # 以下命令将执行“python ./client.py”。
    command: python ./client.py

    # 关键字'network_mode'用于定义网络类型。
    # 这里我们定义容器可以访问计算机的'localhost'。
    network_mode: host

    #关键字'depends_on'允许您定义服务是否
    # 应等到其他服务准备就绪后再启动。
    # 在这里,我们希望“client”服务等待“server”服务准备就绪。
    depends_on:
      - server

5.构建Docker-Compose

设置 docker-compose 后,需要构建您的客户端/服务器应用程序。此步骤对应于“docker build”命令,但适用于不同的服务。

docker-compose build

6. 运行 Docker-Compose

您的 docker-compose 已构建!现在是时候开始了!此步骤对应于“docker run”命令,但适用于不同的服务。

docker-compose up

给你,就是这样。您通常应该看到“Docker-Compose 很神奇!” 显示在您的终端中。

注意:如教程中所述,您的“服务器”服务使用计算机的端口 1234 来分发其内容。如果您在计算机上打开http://localhost:1234/页面,您应该会看到“Doc​​ker-Compose is magic!”。

代码可用

如果您想检索完整代码以更简单地发现它或执行它,在 Github 上供您使用。

GitHub:客户端服务器 Docker-Compose 示例

Docker 的有用命令

像往常一样,我准备了一个可能对您使用 docker-compose 有用的命令列表。

  • 停止容器并删除容器、图像……创建者docker-compose up。

docker-compose down
  • 显示服务的日志输出(例如docker-compose logs -f client:)。

docker-compose logs -f[service name]
  • 列出容器。

docker-composeps
  • 在正在运行的容器中执行命令(例如docker-compose exec server ls:)。

docker-composeexec[service name][command]
  • 列出图像。

docker-compose images
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
Docker Compose 平台设置通常涉及以下步骤: 1. 确定平台:您可以使用 Docker Compose 在多个平台上运行容器化应用程序,例如 Linux、Windows 和 macOS。确定您的目标平台是什么,以便您可以相应地配置和构建您的应用程序。 2. 安装 DockerDocker Compose:在您的目标平台上安装 DockerDocker Compose。Docker 是一个开源容器引擎,用于构建、部署和运行容器化应用程序。Docker Compose 是一个工具,用于定义和运行多个 Docker 容器。 3. 创建 Dockerfile:创建一个 Dockerfile 文件,其中包含用于构建容器映像的指令。您可以使用 Dockerfile 文件来指定应用程序运行所需的操作系统、软件包和库。 4. 创建 docker-compose.yml 文件:创建一个 docker-compose.yml 文件,其中包含应用程序的定义。您可以在此文件中指定容器、它们的映像、端口映射、环境变量等。 5. 构建和运行容器:使用 Docker Compose 构建和运行应用程序容器。在构建期间,Docker Compose 使用 Dockerfile 文件构建容器映像,并将其打包为可运行的容器。一旦容器启动,您可以使用它们来运行您的应用程序。 6. 测试和部署:测试您的应用程序容器,确保它们按预期运行。一旦您满意,您可以部署它们到您的目标平台上,并向用户提供服务。 总之,Docker Compose 平台设置是一个复杂的过程,需要您熟悉 DockerDocker Compose 的基本概念和使用方法。如果您是初学者,建议您参考官方文档和教程,以帮助您更好地理解和应用 Docker Compose。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sonhhxg_柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值