Docker - 设置 Flame



Flame 是一个自托管的服务器起始页和仪表盘。受 SUI 启发,Flame 旨在为您提供一个管理和组织服务器应用程序、服务或链接的中心位置。此外,Flame 具有身份验证机制,可以保护您的书签、程序和设置。它经常用作家庭实验室、个人服务器和云环境中的自定义应用程序中心。

在本章中,我们将讨论将 Flame docker 化的步骤。使用 Docker 设置 Flame 将允许您在容器中运行 Flame,而无需手动配置它并修改不同环境的设置。

Docker 化 Flame 的先决条件

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

  • Docker 应用程序 - 确保您在本地机器上安装了 Docker。您可以从 Docker 官方网站 下载它。如果您具备 Docker 的基本知识,将更有帮助。
  • Docker Compose - 如果你想通过 Docker Compose 使用 Docker 设置 Flame,请确保你的机器上安装了 Docker Compose。您可以从 这里 下载它。
  • 命令行界面 (CLI) - 对命令行界面 (CLI) 及其命令的基本了解将有助于您更好地理解本指南。
  • 文本编辑器 - 编写配置文件需要一个文本编辑器,例如 VSCode 或 Sublime Text。

设置 Flame 项目

拥有 Docker 镜像对于运行您的容器是必要的,因为它包含所有指令和信息,例如构成您的应用程序的服务、环境变量、数据库等。

您可以创建一个自定义 Flame 项目,它将充当您的容器的 Docker 镜像,或者您可以提取预构建的 Docker 镜像。创建自定义镜像可以让您更好地控制环境。

在本节中,我们将解释如何创建自定义 Flame 项目。

步骤 1:创建项目目录

创建一个项目目录,用于存储与 Flame 相关的所有文件。

# Create a folder named flame-docker
$ mkdir flame-docker

# Navigate into the directory
$ cd flame-docker
Flame Create a Project Directory

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

接下来,创建一个稍后将填充的 Dockerfile。此 Dockerfile 将包含生成 Docker 镜像所需的所有指令。

Flame Create a Basic Directory

在文本编辑器中打开 Dockerfile 并向其中添加以下内容:

# Base image for Flame
FROM pawelmalak/flame:latest

# Expose the default Flame port
EXPOSE 5005

基础镜像设置为 pawelmalak/flame,公开的端口为 5005。

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

创建 Dockerfile 后,就可以创建自定义 Docker 镜像了,它将包含运行容器的所有指令。

# Build the Docker image with the tag "my-flame"
$ docker build -t my-flame .
Flame Build a custom Docker Image

步骤 4:运行 Flame 容器

$ docker run -d --name flame -p 5005:5005 my-flame
Run the Flame Container

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

Flame 将其配置和数据(例如书签和设置)存储在本地 JSON 文件中。但是,此数据不是持久的,因为一旦您删除容器,您将丢失所有数据。为避免这种情况,您可以使用 Docker 卷。

Docker 卷允许您永久存储数据,即使您删除了容器。

$ docker run -d --name flame -p 5005:5005 -v ./flame-data:/app/data my-flame
Flame Persisting Data with Volumes

步骤 6:访问 Flame 仪表盘

现在我们的 Flame 容器正在运行,您可以在浏览器中访问 localhost:5005 来访问 Flame 仪表盘。

Access the Flame Dashboard

使用预构建的 Docker 镜像

如果您不想创建自定义 Docker 镜像,您可以简单地使用 Flame 的预构建官方 Docker 镜像来在 Docker 中安装 Flame。

步骤 1:拉取 Flame 镜像

在运行 Flame 容器之前,您需要拉取 Flame 的 Docker 镜像。

$ docker pull pawelmalak/flame
Pull the Flame Image

步骤 2:运行 Flame 容器

拉取 Docker 镜像后,就可以运行 Flame 容器了。

$ docker run -d --name flame -p 5005:5005 pawelmalak/flame
Run the Flame Container

其中,

  • -d = 表示分离模式,这意味着此进程将在后台运行。
  • --name flame = 表示容器的名称。
  • -p 5005:5005 = 将本地机器上的 5005 端口映射到 Flame 容器中的 5005 端口。这允许您通过在浏览器中访问 https://127.0.0.1:5005 来访问 Flame 的仪表盘。
  • pawelmalak/flame = 用于创建容器的 Docker 镜像的名称。

使用 Docker Compose 设置 Flame

在本节中,我们将逐步解释如何使用 Docker Compose 设置 Flame:

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

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

$ touch docker-compose.yml
Using Docker Compose to Set Up Flame

您的文件结构现在应该如下所示:

flame-docker/
└── docker-compose.yml
└── Dockerfile
└── flame-data

步骤 2:填充 .yml 文件

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

version: '3'

services:
  flame:
    image: pawelmalak/flame:latest
    container_name: flame
    restart: unless-stopped
    ports:
      - 5005:5005
    volumes:
      - ./flame-data:/app/data

这里,

  • services - 指定构成此应用程序的服务
  • image - 指定使用的 Docker 镜像,在本例中为 'pawalmalak/flame'
  • container_name - 设置 Flame 容器的名称
  • restart - 确保容器自动重启,除非手动停止
  • ports - 将本地机器上的 5005 端口映射到容器
  • volumes - 卷用于永久存储数据。

步骤 3:运行 Docker Compose

使用以下命令运行 docker-compose.yml 文件。

$ docker-compose up -d
Flame Run Docker Compose

身份验证设置

Flame 具有集成的身份验证机制,允许您限制可以访问仪表盘的用户。您可以将管理员凭据保存在 .env 文件中,并在您的 docker-compose.yml 文件中引用它,以实现更安全的设置。

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

在您的 Flame 目录中创建一个 .env 文件。

# Create a .env file
$ touch .env
Flame Authentication Setup

打开 .env 文件,并在其中添加以下环境变量

FLAME_ADMIN_USERNAME=admin
FLAME_ADMIN_PASSWORD=securepassword

步骤 2:更新 docker-compose.yml

更新您的 docker-compose.yml 文件,并添加您的 .env 文件的路径。

version: '3'

services:
  flame:
    image: pawelmalak/flame:latest
    container_name: flame
    restart: unless-stopped
    ports:
      - 5005:5005
    volumes:
      - ./flame-data:/app/data
    env_file:
      - .env

步骤 3:运行 docker-compose.yml 文件

$ docker-compose up -d
 Run docker-compose.yml file

您的更新后的文件结构现在应该如下所示:

flame-docker/
├── Dockerfile
├── docker-compose.yml
├── .env
└── flame-data/  # Data volume for persistent storage

结论

您的 Flame 容器已成功 docker 化。您已创建了一个 Docker 镜像并在您的 Docker 容器内运行它,确保在不同环境中的前后一致性。这种方法更安全,因为在 Docker 容器中运行 Flame 可以将其与其他服务隔离。如果您的容器崩溃,它根本不会影响您的系统。一致性、可移植性、管理、网络和可扩展性是这种方法的其他一些好处。

在 Docker 中设置 Flame 的常见问题

我们在这里收集了一组关于如何 docker 化 Flame 容器的常见问题及其答案

1. 如果 Flame 容器终止或删除,我的数据会发生什么?

如果容器终止或停止,使用 Docker 卷(例如 ./flame-data:/app/data)存储在持久性存储上的数据不会丢失。书签、配置文件和设置等数据将保存在主机上的 flame-data 目录中。

即使您删除了容器,Flame 也能够访问您的当前数据,因为您可以随时使用相同的卷重新创建它。

2. 我可以将 Flame 与外部数据库(如 PostgreSQL)一起使用吗?

不可以,Flame 不需要也不支持像 MySQLPostgreSQL 这样的第三方数据库。Flame 的设计轻量级,并将配置和书签保存在本地文件中。这些文件保存在 flame-data 目录中,Docker 配置已将其安装为卷。

Flame 默认情况下不依赖数据库;如果您需要类似数据库的功能,则需要自定义它或使用其他服务。

3. 如何防止对我的 Flame 实例进行意外访问?

Flame 具有集成的身份验证机制,允许您限制可以访问仪表盘的用户。您可以明确地在 docker-compose.yml 文件或 .env 文件中设置管理员凭据以保护 Flame。

通过在 HTTPS 启用的反向代理后面保护 Flame 并建立防火墙规则以限制对 Flame 端口的访问,您可以进一步增强安全性。

广告