使用Docker版本的演示软件的方法

这篇文章是关于OSS的无代码/低代码开发工具“Prisanter”的圣诞节日历的第14篇文章。

首先

我想写一篇关于在公式的Docker镜像上操作的方法。

    implem/pleasanter – Docker Image | Docker Hub

本文将使用Docker Compose来进行操作步骤。

Docker Compose Overview | Docker Docs (英語)

事前准备

有两种场景来安装Docker Compose:一种是安装Docker Desktop,另一种是安装Compose插件。请参阅文档以了解详细信息并开始使用。

    Overview of installing Docker Compose | Docker Docs

配备图像

我们最终会将它配置成这样。

.
|-- docker-compose.yml
|
+-- app_data_parameters
|   +-- ExtendedSqls
|   |   +-- Sample.json.txt
|   |  
|   +-- Mail.json
|   +-- Rds.json
|
+-- CodeDefiner
|   +-- Dockerfile
|
+---Pleasanter
    +-- Dockerfile

参数文件的布置

首先,将参数JSON和扩展SQL等放置在 App_Data/Parameters 目录下,并命名为 app_data_parameters。

以下是有关 app_data_parameters 文件夹的注意事项。

    1. 必须将 App_Data/Parameters 与同一目录结构相同

 

    1. Implem.Pleasanter/Implem.Pleasanter/App_Data/Parameters at main · Implem/Implem.Pleasanter

建议只将已更改或新增的文件放置其中
仅对文件进行编辑不会反映在执行图像中,所以请务必执行 docker compose build

设置环境变量

设置连接字符串和初始化PostgreSQL所需的环境变量。要设置的项目如下:

1. ConnectionString和PostgreSQL的初始化需要的环境变量将被配置。
2. 配置以下内容以设置所需的项。

    • PostgreSQLのバージョン指定

 

    • PostgreSQL初期化パラメータ

 

    • PostgreSQL用データボリュームのマウント先パス

 

    • プリザンターのバージョン指定

 

    デーダベース接続文字列(ConnectionString)

指定PostgreSQL的版本。

POSTGRES_VER: PostgreSQLのバージョン

postgres – Official Image

请指定要使用的在Docker Hub上公开的版本。

PostgreSQL初始化参数

将PostgreSQL的管理用户、密码和数据库的指定通过环境变量传递。

    • POSTGRES_USER

 

    • POSTGRES_PASSWORD

 

    • POSTGRES_DB

 

    • POSTGRES_HOST_AUTH_METHOD

 

    POSTGRES_INITDB_ARGS

你可以通过 POSTGRES_HOST_AUTH_METHOD 和 POSTGRES_INITDB_ARGS 明确指定认证方法。
请参考 PostgreSQL 的官方镜像文档以了解更多详细信息。

以一个例子来说明。

POSTGRES_HOST_AUTH_METHOD=scram-sha-256
POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256"

這個部落格可以作為參考。

    Postgres公式Dockerイメージのパスワードの扱いについて

PostgreSQL的数据卷挂载路径。

Docker的功能中有一种机制用于与容器分开存储数据,它使用数据卷来存储数据库的数据区域。

    PGDATA

请参考官方镜像文档,以完整路径指定用于存放数据库实体文件的容器内目录。

指定プレゼンテーション软件的版本。

这是用于指定预展示版本的环境变量。

PLEASANTER_VER: Pleasanterのバージョン

implem/pleasanter Tags | Docker Hub

这是一个重要的要点。(Zhè shì de .)

    1. 请指定公开的Docker Hub官方镜像版本。

 

    如果没有此环境变量或者版本无效,则使用最新版本 “latest”,会在执行 “docker compose build” 时发布的最新版本。

数据库连接字符串(ConnectionString)

这是常用的数据库连接字符串,但需要将其作为环境变量名称。

    • Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString

 

    • Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString

 

    Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString

请参考过去的条目以了解原因。

    PleasanterをDockerで動かす – Qiita

这是关于数据库连接字符串的手册。

    パラメータ設定:Rds.json | Pleasanter

需要将PostgreSQL环境变量的内容与SaConnectionString中所写的内容合并。

SaConnectionString(数据库连接字符串)是用一行表示的用于以超级用户身份连接到PostgreSQL的设置。每个部分的含义如下。

Database: 環境変数の POSTGRES_DB と揃える

UID: 環境変数の POSTGRES_USER と揃える

PWD: 環境変数の POSTGRES_PASSWORD と揃える

以上内容均由 initdb 创建并初始化的 PostgreSQL 生成。

PostgreSQL的Docker官方镜像在容器初始化时会执行initdb命令。
它被实现为使用以POSTGRES_开头的环境变量来进行初始化。

postgres – Official Image | Docker Hub

docker-library/postgres: Docker Official Image packaging for Postgres

环境变量的示例

请根据需要适当修改,因为所有密码部分都已经掩盖为********。

PLEASANTER_VER=1.3.xx.y
POSTGRES_VER=15
Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString='Server=db;Database=postgres;UID=postgres;PWD=********'
Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=********'
Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=********'
POSTGRES_USER=postgres
POSTGRES_PASSWORD=********
POSTGRES_DB=postgres
POSTGRES_HOST_AUTH_METHOD=scram-sha-256
POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256 --encoding=UTF-8"
PGDATA=/var/lib/postgresql/data

每个定义文件的示例

请根据我之后提供的样本进行放置。

docker-compose.yml 的意思是 Docker Compose 配置文件。

version: '3.7'

services:
  pleasanter:
    build:
      context: .
      dockerfile: ./Pleasanter/Dockerfile
      args:
        - VERSION=${PLEASANTER_VER}
    container_name: pleasanter_${PLEASANTER_VER}
    environment:
      Implem.Pleasanter_Rds_SaConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString}
      Implem.Pleasanter_Rds_OwnerConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString}
      Implem.Pleasanter_Rds_UserConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString}
    depends_on:
      - db
    ports:
      - '8881:80'
    networks:
      - default
  codedefiner:
    build:
      context: .
      dockerfile: ./CodeDefiner/Dockerfile
    container_name: codedefiner
    environment:
      Implem.Pleasanter_Rds_SaConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString}
      Implem.Pleasanter_Rds_OwnerConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString}
      Implem.Pleasanter_Rds_UserConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString}
    depends_on:
      - db
    networks:
      - default
    stdin_open: true
  db:
    container_name: postgres${POSTGRES_VER}
    image: postgres:${POSTGRES_VER}
    volumes:
      - type: volume
        source: pg_data
        target: ${PGDATA}
    networks:
      - default
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_HOST_AUTH_METHOD
      - POSTGRES_INITDB_ARGS
      - PGDATA
    user: postgres
  dbbackup:
    image: ubuntu
    container_name: dbbackup
    networks:
      - default
    volumes:
      - type: volume
        source: pg_data
        target: /pg_data
      - type: bind
        source: .
        target: /backup

volumes:
  pg_data:
    name: ${COMPOSE_PROJECT_NAME:-default}_pg_data_${POSTGRES_VER}

networks:
  default:
    name: pleasanter_prod_network

CodeDefiner/Dockerfile的释义是:

FROM implem/pleasanter:codedefiner

COPY app_data_parameters/ /app/Implem.Pleasanter/App_Data/Parameters/
ENTRYPOINT [ "dotnet", "Implem.CodeDefiner.dll" ]

愉快/ Docker文件

ARG VERSION=latest
FROM implem/pleasanter:${VERSION}

COPY app_data_parameters/ App_Data/Parameters/
ENTRYPOINT [ "dotnet", "Implem.Pleasanter.dll" ]

建立图像和初始化数据库

请在执行前意识到需要构建容器镜像的过程。(很容易忘记)

一旦将各个定义文件放置好后,我将尝试执行。

プリザンターのイメージ構築
docker compose build

DB初期化
docker compose run –rm codedefiner _rds

プリザンターのサービス用のコンテナを構築、作成、実行
docker compose up -d pleasanter

请使用浏览器访问 http://localhost:8881/ ,并确认启动情况。

第一次登录与往常一样。

请停止演示。

docker compose stop pleasanter

预赛主持人的容器将保持原样停止。

PostgreSQL的容器仍在运行中。

启动幻灯片呈现

如果停止的话,可以通过开始来重新执行。

docker compose start pleasanter

停用PostgreSQL。

停止 PostgreSQL 容器。容器保留不变。如果开始,将再次执行。

docker compose stop db
docker compose start db

容器日志

    1. 你可以查看每个服务容器的日志。

 

    1. 使用命令 docker compose logs [服务名] 可以检查日志。

如果使用 -f 选项,将持续输出日志,适合用于启动确认等情况。
使用命令 docker compose logs -f [服务名]。

删除容器和网络

然后容器将被删除,同时保持依赖关系。

docker compose down
[+] Running 3/3
 ✔ Container pleasanter_1.3.48.0    Removed
 ✔ Container postgres15             Removed
 ✔ Network pleasanter_prod_network  Removed       
    1. Prezentinator的容器

 

    1. PostgreSQL的容器

 

    网络

运行该命令后,PostgreSQL的数据存储卷仍然保持不变。

如果想再次执行,请

docker compose up -d pleasanter

如果假设网络已经建立好,那么在创建后,会启动一个PostgreSQL的容器和一个Presenter的容器。

[+] Building 0.0s (0/0)
[+] Running 3/3
 ✔ Network pleasanter_prod_network  Created
 ✔ Container postgres15             Started
 ✔ Container pleasanter_1.3.48.0    Started

升级的方法

您可以按照以下步骤进行 Presenter(プリザンター)的升级:

    1. 停止Präsentor

 

    1. 更改环境变量的版本

 

    1. 创建新版本的容器映像

 

    1. 更新CodeDefiner和重新定义数据库

 

    运行Präsentor

停用 Prezenter 容器

docker compose stop pleasanter

更改环境变量的版本

在Docker Hub上查看版本标签,并修改环境变量PLEASANTER_VER。

查看Presenter的升级信息,如果参数有差异,则进行反映。

    プリザンターの直近のバージョンアップ情報 | Pleasanter

创建新版本的容器镜像。

docker compose build

对CodeDefiner进行更新和重新定义数据库

进行pull操作以更新CodeDefiner的镜像。

docker compose pull codedefiner

我們將執行對數據庫的重新定義。

docker compose run --rm codedefiner _rds

执行一份展示文稿

docker compose up -d pleasanter
[+] Building 0.0s (0/0)
[+] Running 3/3
 ✔ Container postgres15           Running
 ✔ Container pleasanter_1.3.48.0  Recreated
 ✔ Container pleasanter_1.3.49.0  Started

停止并重新创建之前版本的容器作为新版本容器后再开始。

数据库中的数据将被继承下来。

要查看集装箱内部,

接下来将写下确认容器内容的步骤和注意事项。

    1. 如果要检查容器镜像的情况,可以运行以下命令:

 

    1. docker compose run –rm –entrypoint /bin/bash pleasanter

如果要进入正在运行的pleasanter容器实例内部,则可以运行以下命令:
docker compose exec pleasanter /bin/bash

* 有效的命令必须满足以下条件:存在正在运行的容器或Compose项目。
– docker compose ls:存在正在运行的项目。
– docker ps:显示容器列表。

要备份数据卷的方法是什么?

可以通过挂载数据卷和主机备份目录,并使用tar命令对PostgreSQL的数据目录进行归档,从而进行备份。

创建一个名为 pgdata-backup.tar.gz 的文件,并将其保存在当前执行的目录中。

docker compose run --rm dbbackup tar czvf /backup/pgdata-backup.tar.gz -C /pg_data .

删除容器、网络和数据卷。

※注意※ : 删除数据卷意味着删除数据库数据目录(${PGDATA}),请注意。

docker compose down -v

就是这样了。

广告
将在 10 秒后关闭
bannerAds