Docker - 设置 Pawns



Pawns.app 或 Pawns 是一个平台,允许用户通过共享其带宽或完成调查来赚钱。公司使用用户通过其 IP 地址共享的带宽来运行其服务,用户可以通过参与涵盖各种主题的调查来赚取更多钱。

在本章中,我们将深入探讨如何将 Pawns 容器化。将 Pawns 应用程序容器化将允许我们将其在隔离的环境中运行,以在不同的环境中实现一致性,而无需手动更改系统配置。

将 Pawns 容器化的先决条件

在开始本指南之前,请确保您具备以下先决条件:

  • Docker 应用程序 - 验证 Docker 是否已在您的计算机上本地安装。它可以在 Docker 的官方网站上下载。如果您对 Docker 有所了解,那也将有所帮助。
  • Docker Compose - 要通过 Docker Compose 使用 Docker 设置 Pawns,请确保您的计算机上已配置 Docker Compose。
  • 界面命令行 (CLI) - 如果您对命令行界面 (CLI) 及其命令有基本的了解,您将能够更好地理解本文。
  • 文本编辑器 - 编写配置文件需要使用文本编辑器,例如 VSCode 或 Sublime Text。

设置 Pawns 项目

要启动您的容器,您需要一个 Docker 镜像,因为它包含所有指令和数据,例如环境变量、数据库和构成您的应用程序的服务。

您有两个选择 - 提取预构建的 Docker 镜像或创建一个自定义 Pawns 项目,该项目将作为容器的 Docker 镜像。

创建自定义镜像时,您可以更好地控制环境。在本节中,我们将讨论创建自定义 Pawns 项目。

步骤 1:创建项目目录

创建一个项目目录,其中将存储与 Pawns.app 相关的所有文件。

# Create a folder for the Pawns project
$ mkdir pawns-docker

# Navigate into the directory
$ cd pawns-docker
Setting up Pawns Project 1

步骤 2:创建一个基本的 Dockerfile

导航到 pawns-docker 目录并在其中创建一个 dockerfile,稍后将对其进行填充。

# Create a Dockerfile
$ touch Dockerfile

在任何文本编辑器中打开 dockerfile 并向其中添加以下说明。每个说明都将创建一个单独的 Docker 镜像层。

# Use an appropriate base image
FROM iproyal/pawns-cli:latest

# Set a working directory
WORKDIR /usr/src/app

# Copy the application code (if needed)
COPY . .

# Install any dependencies (if required)
# RUN npm install   # Uncomment if Node.js is involved

# Expose the default port
EXPOSE 8080

# Define environment variables (optional, modify as needed)
ENV NODE_ENV=production

# Specify the default command to run
CMD ["npm", "start"]

基本镜像设置为 pawns/app,公开的端口为 8080。

Setting up Pawns Project 2

步骤 3:构建自定义 Docker 镜像

创建 docker 文件后,创建一个 Docker 镜像,该镜像将存储运行容器的说明。

$ docker build -t pawns-app .
Setting up Pawns Project 3

步骤 4:运行 Pawns 容器

让我们使用刚刚创建的镜像运行 Pawns 容器。

$ docker run -d --name pawns -p 8080:8080 pawns-app
Run Pawns Container

步骤 5:使用卷持久化数据

Pawns 容器中的数据是临时存储的,即它只会持续到您拥有容器的时间。您可以使用 Docker 卷永久存储数据,以便即使在删除 Pawns 容器后也不会丢失。

即使您决定删除容器,您也可以通过 Docker 卷永远保存数据。

$ docker run -d --name pawns -p 8080:8080 -v ./pawns-data:/app/data pawns-app
Persisting Pawns Data with Volumes

使用预构建的 Docker 镜像

要使用 Docker 安装 Pawns,您可以使用已构建的官方 Docker 镜像,从而避免了创建自己的镜像的麻烦。

步骤 1:提取 Pawns 镜像

在运行容器之前,先提取 Pawns 的 Docker 镜像。

$ docker pull iproyal/pawns-cli:latest
Using pre-built Pawns Image 1

步骤 2:运行 Pawns 容器

提取 Docker 镜像后,就可以运行 Pawns 容器了。

$ docker run -d --name pawns -p 8080:8080 iproyal/pawns-cli:latest

其中,

  • -d - 表示分离模式,这意味着此进程将在后台运行
  • --name pawns - 表示容器的名称
  • -p 8080:8080 - 将您本地机器上的端口 8080 映射到 Pawns 容器中的端口 8080。这允许您通过在浏览器中访问https://127.0.0.1:8080来访问 Pawns 的仪表板。
  • pawns/app - 用于创建容器的 docker 镜像的名称
Using pre-built Pawns Image 2

使用 Docker Compose 设置 Pawns

让我们使用官方 Docker 镜像使用 Docker compose 创建 Docker 容器。

步骤 1:创建一个 docker-compose.yml 文件

在您的 pawns 目录中创建一个 docker-compose.yml 文件。

$ touch docker-compose.yml

您的目录结构现在应该如下所示:

pawns-docker/
└── docker-compose.yml
└── Dockerfile
└── pawns-data/
Using Docker Compose to Set Up Pawns 1

步骤 2:填充 .yml 文件

在文本编辑器中打开您的 docker-compose.yml 文件,并向其中添加以下配置:

version: '3.8'

services:
   pawns:
      image: iproyal/pawns-cli:latest
      container_name: pawns
      restart: unless-stopped
      ports:
         - "8080:8080"
      volumes:
         - ./pawns-data:/app/data
      environment:
         - APP_ENV=production
         - APP_PORT=8080
         - DATABASE_URL=sqlite:///app/data/pawns.db
         - LOG_LEVEL=info
      networks:
         - pawns-network
      logging:
      driver: "json-file"
      options:
         max-size: "10m"
         max-file: "3"
   healthcheck:
      test: ["CMD-SHELL", "curl -f https://127.0.0.1:8080/ || exit 1"]
      interval: 30s
      retries: 3
      start_period: 30s
      timeout: 10s

networks:
   pawns-network:
      driver: bridge

volumes:
   pawns-data:
      driver: local

步骤 3:运行 Docker Compose

$ docker-compose up -d
Using Docker Compose to Set Up Pawns 2

结论

在本章中,我们已成功将 Pawns 容器化。我们创建了一个 Docker 容器并运行了 Pawns 实例,使服务在不同的环境中保持一致,并与其他应用程序隔离。Docker 卷确保即使您的容器崩溃或被删除,您的持久化数据也是安全的。

在 Docker 中运行 Pawns 更易于维护和部署,并且您可以使用 Docker Compose 自动化和加快设置过程。

关于将 Pawns 容器化的常见问题

在本节中,我们收集了一组关于将 Pawns 容器化常见问题及其简短答案。

1. 如果我的 Pawns 容器被删除,我的数据也会被删除吗?

存储在 Pawns 容器内部的数据将被视为临时数据,因此一旦您删除容器,这些数据就会丢失。但是,存储在 Docker 卷中的数据将是永久性的,即使在删除容器后也可以访问。

在 docker-compose.yml 配置中,在主机上创建了一个名为“./pawns-data:/app/data”的部分,用于保存配置文件和日志。这确保了数据的安全,并允许通过使用相同卷创建新的容器来恢复数据。

2. 我可以将 Pawns 与 MySQL 或 PostgreSQL 等外部数据库一起使用吗?

PostgreSQL、MySQL 和 MongoDB 是 Pawns 不支持的第三方数据库的示例。该平台的配置、日志和其他数据作为其轻量级设计的一部分保存在本地文件中。

通常,这些文件保存在挂载的卷(./pawns-data:/app/data)中。可以使用 Docker 卷保留此数据,但是,Pawns 不旨在与外部数据库进行交互以进行数据管理或存储。如果您的应用程序需要,您可能需要集成额外的服务来处理更高级的数据处理。

3. 我可以保护我的 Pawns 实例免受意外访问吗?

您可以遵循正确的网络安全协议来保护 Pawns。要限制对 Pawns 公开端口的访问,请使用防火墙规则。例如,您可以设置防火墙,以便只有特定 IP 地址或子网才能访问端口 8080。

要通过 SSL/TLS 加密保护 Pawns 实例,请使用反向代理,例如 Nginx 或 Traefik。这确保了在您的用户和 Pawns 服务之间交换的任何数据的加密。通过使用 VPN 隐藏 Pawns,您可以进一步限制访问。另外,Pawns 实例只能由具有 VPN 访问权限的用户访问。

广告