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://: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://: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 訪問許可權的使用者訪問。

廣告