メインコンテンツまでスキップ

環境変数リファレンス

PlantPulse のすべての設定は 環境変数一箇所 から始まります。このページはインストール・運用時に出会う変数をカテゴリ別に整理したリファレンスです。

このページは インフラ/デプロイ環境変数(PP_* · DOCKER_PP_*) を扱います。アプリケーション動作プロパティ(engine.*, websocket.* など)は プロパティリファレンス を参照してください。

1. 設定ファイルはどこにありますか?

プラットフォームは Docker Compose スタック として動作し、値の 定義元は2つ です。

定義元何がここにあるか誰が読むか
plantpulse-platform-docker/bin/env.shホストで決まる値 — 資格情報のデフォルト値、docker ランタイム、ネットワーク、ホストで 計算される リソース値ホストの運用スクリプト
plantpulse-platform-docker/compose/docker-compose.ymlコンテナが実際に見る値コンテナ
アプリコンテナは env.sh を読みません

アプリ6つ(plantpulse-server-web · plantpulse-batch-web · plantpulse-warehouse · plantpulse-plugin-opcua-server · plantpulse-plugin-aasx-server · plantpulse-ha)は env.sh を source しません。アプリが見る定義元は compose 一つだけです。

つまり env.sh のみに存在し compose にない名前は、アプリに 届かず、アプリは jar/WAR 内蔵のデフォルト値で動作します。実際にデータレイクだけ識別子を変えたサイトで、アプリ5つが古い名前を使い続けた事故がありました(2026-08-29)。

ティアごとに値が決定される方式が異なります。

ティア何が値を決めるか
plantpulse-datalakecompose が渡した値 → コンテナの pd${VAR:-기본값} として受け取ります。渡した値が勝ちます
アプリ6つcompose が渡した環境変数が jar/WAR 内蔵のデフォルト値を上書きします
plantpulse-certscompose の PP_TLS_* のみを見ます。ファイルを source しません

優先順位 — 何が何に勝つか

ホスト側では bin/env.sh が上から下へ回る順序がそのまま優先順位になります。

優先順位出所勝つ理由
1 (最上位)/etc/kopens/plantpulse-platform.env (シークレットサイドカー)export VAR=값 無条件代入 のためシェル export も上書きします
2/etc/kopens/platform.node.env (ノード別)サイドカーの次に source され、同じく無条件代入
3呼び出しシェルの exportデフォルト値の :- に勝ちます — ただし 1・2 がその名前を記述していない場合のみ
4 (最下位)bin/env.sh${VAR:-기본값}unset の場合のみ
1番が最上位というのが最もよく間違えられる点です

インストールが終わったノードで PP_PG_PASSWORD=새값 bin/up.sh静かに無視されます。 サイドカーがすでにその名前を保持しているからです。値を変える方法は bin/passwd.sh / bin/rotate-secret.sh のみです。

🔑 秘密値の正本は /etc/kopens/ の下にある

DB・メッセージングのパスワードと API キーは上記2つのファイルではなくサイドカーにある

サービスアカウントのパスワード(PP_PG_PASSWORD · PP_CASSANDRA_PASSWORD · PP_MQ_PASSWORD など)と API キーの実際の値は repo ツリー外 のサイドカーファイルにあります。

ファイル状態
/etc/kopens/plantpulse-platform.env現行正本 — platform · ai · studio 3製品共通規約(plantpulse-<product>.env)、権限 0600
/opt/kopens/plantpulse-platform.env旧パス (2026-08-25 ~ 08-29 の間のみ存在) — 読みも書きもしません。残っていればインストールスクリプトが正本へ戻します

ls -l /etc/kopens/ で正本が存在するか先に確認してください。

サイドカーが bin/env.sh に勝ちます。 env.sh は先頭で先にサイドカーを source し、それ以下の値がすべて ${VAR:-기본값} 形式だからです。そのため env.sh のパスワードだけを直しても 何も起こりません — サイドカーの古い値が引き続き勝ちます。

インストール時に乱数を作りません

install.shbin/env.sh のデフォルト値をそのままサイドカーに載せます。ですから コミッショニング時に必ず差し替える 必要があります → 初期パスワード

compose はパスワードを ${PP_X:?} として要求するため、値が空であればスタックが「半分だけ設定された状態で起動」することなく そもそも立ち上がりません。

パスワード・API キーをファイル編集で変えないでください

サイドカーを直すだけでは反映は完了しません。PostgreSQL · Cassandra のように サーバー側アカウントが正本 となる値はサーバー側も併せて変える必要があり、順序を誤るとプラットフォームが起動しません。

専用手順を使ってください — パスワード変更(クレデンシャルローテーション)コミッショニング時に一度 変更して終わる作業です。

🔑 マークは 秘密値 です。git・イシュー・チャットに原文を入れないでください。

1.5 コンテナランタイム・ホストリソース (DOCKER_*)

bin/env.sh が決める値です。以下のリソース値は 固定デフォルト値ではなくホストを見て計算されます — 定数を使うと小規模ホストでは起動自体が拒否されたり(--cpus が実コア数より大きいと docker が拒否します)、起動中に OOM-kill されるためです。ボックスごとに指定した値が常に勝ちます。

変数どう決まるか
DOCKER_CMDdocker (podman も可能)
DOCKER_REGISTRYdocker.kopens.io/pp — スタックイメージ8つのレジストリ prefix
PP_IMAGE_TAGlatest。リリース時には 2026.08 のような固定タグを推奨します
DOCKER_PP_CPUSnproc (読み取り失敗時 8)
DOCKER_PP_CLUSTER_CORESDOCKER_PP_CPUS - 2、最小4・最大30。コンテナに PP_CLUSTER_CORES として渡されます
DOCKER_PP_MEMORYホスト RAM の 90%、最小 8G
DOCKER_DATALAKE_MEMORY80G。ホストがそれより小さければ RAM の90%(2026-09-04 に 64G から引き上げられました — アーカイバの spark-submit がこのコンテナ内で動くようになり、64g 上限で OOM が発生したためです。実測ピーク 63.9G)
DOCKER_PW_MEMORYDOCKER_DATALAKE_MEMORY と同じ値 — ワーカーがデータレイクと同じイメージを使うため同じ予算を与えます
DOCKER_PP_DATA_DISK_NAME/ を支える実ディスクを findmnt + lsblk で逆追跡(LVM/dm も物理ディスクまで)。失敗時 sda
DOCKER_PP_EXTERNAL_IPデフォルト空値。 NAT 環境でのみ実際の公開IP
DOCKER_PP_EXTERNAL_IP に無効な IP を入れないでください

この値は PP_SERVICE_IP を経由して TLS 証明書の SAN に入ります。形式が正しくない IP が一つでも混じると openssl が拡張ファイル全体を拒否し、証明書が一枚も生成されなくなります。

ネットワーク

変数デフォルト値説明
DOCKER_PP_NETWORKpp-netdocker network 名
DOCKER_SUBNET10.99.0.0/24サブネット(他のコンテナ網と重ならないように)
DOCKER_GATEWAY10.99.0.1ゲートウェイ
DOCKER_PP_IP10.99.0.100データレイクの固定 IP

アプリ別メモリ上限 — compose が決めます

アプリごとに mem_limit を別々に持つことが コンテナ分離の第一の目的(OOM 隔離) です。あるアプリが上限に達しても他のアプリとインフラは生き続けます。

変数デフォルト値サービス
DOCKER_SERVER_MEMORY / DOCKER_SERVER_HEAP16g / 12gplantpulse-server-web
DOCKER_BATCH_MEMORY / DOCKER_BATCH_HEAP4g / 3gplantpulse-batch-web
DOCKER_WAREHOUSE_MEMORY8gplantpulse-warehouse
DOCKER_OPCUA_MEMORY4gplantpulse-plugin-opcua-server
DOCKER_AASX_MEMORY4gplantpulse-plugin-aasx-server
DOCKER_HA_MEMORY2gplantpulse-ha
DOCKER_DATALAKE_MEMORY80gplantpulse-datalake

ボリューム

変数デフォルト値用途
DOCKER_PP_DATA_VOLUMEpp-dataデータ永続保存
DOCKER_PP_TEMP_VOLUMEpp-temp一時データ
DOCKER_PP_BACKUP_VOLUMEpp-backupバックアップストレージ
DOCKER_PP_SECURITY_VOLUMEpp-securityTLS 資材
DOCKER_PP_PROXY_CERTS_VOLUMEpp-proxy-certsプロキシ証明書

install.sh 一回限りのオプション

変数効果
SKIP_OS=1OS セットアップ省略
SKIP_LOGIN=1レジストリログイン省略
SKIP_FW=1ファイアウォール設定省略
DOCKER_DATA_DIRDocker data-root パス(デフォルト /data1/docker-data)

2. 最低限これだけは確認してください

新規単一サーバーインストールで実際に触るものはわずかです。リソース値はインストールがホストを見て計算するためです。

何をどこで備考
🔑 各種 *_PASSWORD · API キーbin/passwd.sh / bin/rotate-secret.shコミッショニング時に 必ず差し替え。ファイル編集では変わりません
PP_LANGbin/env.sh韓国語運用であれば ko (デフォルト en)
PP_TZbin/env.sh韓国運用は Asia/Seoul を維持
DOCKER_PP_EXTERNAL_IPbin/env.shNAT 環境の場合のみ。 それ以外は空値のまま
DOCKER_DATALAKE_MEMORYbin/env.shデフォルト 80G。ホストが小さければ自動的に下がります
以下 §3 以降の PP_* は「コンテナが見る名前」です

PP_HOST_IP · PP_DATA_DIR · PP_CLUSTER_CORES のような値はコンテナ内部で通用する名前であり、ホストでその値を決めるのは compose と bin/env.shDOCKER_* です(§1.5)。例えばコア数は DOCKER_PP_CLUSTER_CORES が計算してコンテナに PP_CLUSTER_CORES として渡されます。

ホストで PP_CLUSTER_CORES だけを直しておいて反映されることを期待しないでください — 渡さなければ 16 vCPU のボックスが存在もしない 30 コアを信じて Kyuubi が永遠に立ち上がりません。

3. プラットフォーム基本 / ネットワーク / リソース

変数デフォルト値説明
PP_HOME/opt/kopens/plantpulse-platformインストールルート(コンテナ内部同一)
PP_SCHEMEPPデプロイ識別スキーム
PP_MODEMASTERノード役割(MASTER / ワーカー) — クラスタリング(水平スケール)軸
PP_TIERFULLこのノードが起動する 階層ゲート(FULL / DATALAKE / APP) — PP_MODE と直交。FULL=インフラ+アプリオールインワン、DATALAKE=インフラのみ、APP=アプリのみ(リモートデータレイク接続)。詳細は 2ノード分離インストール
PP_OPTIONS{}個別サービス on/off 専用 JSON。階層ゲートは PP_TIER に移管(下記 §3.3 参照)
PP_HOST_IP127.0.0.1このノードの IP
PP_SERVICE_IP127.0.0.1サービスバインド IP
PP_MASTER_IP127.0.0.1ワーカー/APP ティアが見る マスター(データレイク) IP。Kafka advertised.listeners のソースでもある。DATALAKE ティアインストール時に未指定であればホスト IP に自動検出
PP_DATALAKE_ANCHOR(派生)データストア HOST 5種のデフォルト IP アンカー。APP ティア=PP_MASTER_IP(リモートデータレイク)、それ以外(FULL/DATALAKE)=PP_HOST_IP(自分の IP)。直接設定しない派生値(下記 §3.2 参照)
PP_PUBLIC_IP127.0.0.1外部公開 IP(NAT 環境)
PP_DATA_DIR/data1/pp-dataデータルート
PP_TEMP_DIR/data1/pp-temp一時ファイルルート
PP_BACKUP_DIR/data1/pp-backupバックアップルート
PP_DATA_DISK_NAMEsdbデータディスクデバイス名
PP_CLUSTER_CORES30使用コア数
PP_CLUSTER_MEMORY_BY_CORE2Gコアあたりメモリ割り当て
PP_LANGenデフォルト言語
PP_TZAsia/Seoulタイムゾーン(全 java プロセスに自動適用)

3.1 PP_TIER — 階層起動ゲート

PP_TIER はこのノードが どの階層を起動するか を決めるゲートです。クラスタリング軸である PP_MODE(MASTER/WORKER)とは完全に独立しています。

PP_TIER起動階層
FULL (デフォルト)インフラ + アプリケーション(単一ボックスオールインワン — 未指定時は既存インストールと同一)
DATALAKEインフラ階層のみ(Cassandra/PG/Kafka/MQTT/Redis/MinIO/Spark/Hive/TSE/CEP/Data Gateway/Temporal/Kestra/Monitor)
APPアプリケーション階層のみ(Server/Batch/Warehouse/OPC-UA/AASX/HA — リモートデータレイク接続)

データレイク/アプリケーションを2台のボックスに分ける手順は 2ノード分離インストール を参照してください。

3.2 PP_DATALAKE_ANCHOR — データストアアンカー(派生値)

概念: PP_REDIS_HOST·PP_POSTGRES_HOST·PP_CASSANDRA_HOST·PP_MINIO_HOST·PP_TSE_HOST·PP_TEMPORAL_HOST·PP_KESTRA_HOST·PP_DATA_GATEWAY_HOST·PP_CEP_HOST のデフォルトホストはすべて ${PP_DATALAKE_ANCHOR} に解決されます。

  • APP ティアでは、ストレージがリモート(データレイクノード)であるため PP_DATALAKE_ANCHOR = PP_MASTER_IP
  • それ以外(FULL/DATALAKE)では、自分の IP にバインドするため PP_DATALAKE_ANCHOR = PP_HOST_IP

この値は PP_TIER から自動的に派生するため直接設定しません。APP ノードは PP_MASTER_IP だけ指定すれば、すべてのデータストアホストが自動的にデータレイクを指すようになります。

3.3 PP_OPTIONS — 個別サービス on/off

PP_OPTIONS個別コンポーネントをオン・オフする JSON です。デフォルト値 {} であり、未指定のキーはすべて true(有効)とみなされます。階層単位の有効化(旧 use-infra / use-app)は PP_TIER に移管されました。

例)外部管理型 Redis を使用して内蔵 Valkey をオフにするには:

export PP_OPTIONS='{"enable-valkey":false}'

利用可能な enable-* キー(すべてデフォルト true):

enable-messaging · enable-valkey · enable-postgres · enable-cassandra · enable-spark · enable-minio · enable-tse · enable-cep · enable-workflow · enable-data-gateway · enable-sql · enable-hive · enable-gravitino · enable-kyuubi · enable-grafana · enable-monitor

4. データストア

変数デフォルト値説明
PP_REDIS_HOST / PP_REDIS_PORT${PP_DATALAKE_ANCHOR} / 6379Valkey/Redis(TLS リスナー 6380)
PP_REDIS_USER / 🔑 PP_REDIS_PASSWORDredis / —Redis アカウント
PP_POSTGRES_HOST / PP_POSTGRES_PORT${PP_DATALAKE_ANCHOR} / 5432PostgreSQL 18(Percona)
PP_PG_USER / 🔑 PP_PG_PASSWORDplantpulse / —PostgreSQL アカウント
PP_CASSANDRA_HOST / PP_CASSANDRA_PORT${PP_DATALAKE_ANCHOR} / 9042Cassandra
PP_CASSANDRA_USER / 🔑 PP_CASSANDRA_PASSWORDcassandra / —Cassandra アカウント
PP_STORAGE_PORT9042ストレージ階層クライアントが再利用する Cassandra ポート
PP_MINIO_HOST / PP_MINIO_PORT${PP_DATALAKE_ANCHOR} / 9000MinIO オブジェクトストレージ
PP_MINIO_USER / 🔑 PP_MINIO_PASSWORDminio / —MinIO アカウント
PP_MINIO_BUCKETplantpulseデフォルトバケット
PP_DB_NAMEppPostgreSQL データベース名
PP_KEYSPACEppCassandra キースペース名
PP_HIVE_DBhive-metastore-230Hive メタストア DB

5. メッセージング

変数デフォルト値説明
PP_MQ_USER / 🔑 PP_MQ_PASSWORDmq / —Kafka・MQTT 共用アカウント(Kafka 専用アカウントはありません)
PP_TOPIC_PREFIXppKafka トピック接頭辞(pp-tag-point など)
PP_KAFKA_HOST / PP_KAFKA_PORTPP_MASTER_IP / 9092Kafka ブローカー
PP_KAFKA_TLS_PORT9094Kafka 外部 TLS
PP_KAFKA_CONTROLLER_PORT9093Kafka KRaft コントローラー
PP_MQTT_HOST / PP_MQTT_PORTPP_MASTER_IP / 1883MQTT(HiveMQ)
PP_MQTT_TLS_PORT1884MQTT TLS
STOMP(ActiveMQ)は引退しました

ブラウザリアルタイムプッシュが SSE に変わり、STOMP ブローカーがデータレイクイメージから除外されました。PP_STOMP_* 変数と 61000/61004 ポートは もはやサービスされていません。 古いファイアウォールルールに残っていれば整理してください。

6. 処理・時系列・分析・ワークフロー

変数デフォルト値説明
PP_CEP_HOST / PP_CEP_PORT / PP_CEP_TLS_PORT${PP_DATALAKE_ANCHOR} / 7400 / 7401CEP サーバー
PP_CEP_PROTOCOLhttpCEP 接続プロトコル。分散/コンテナは https 推奨
PP_CEP_CONNECT_PORT(派生)server-web→CEP 接続ポート。プロトコルに自動整列(http→7400、https→7401)。明示すればその値が優先
PP_DATA_GATEWAY_HOST / PP_DATA_GATEWAY_PORT / PP_DATA_GATEWAY_TLS_PORT${PP_DATALAKE_ANCHOR} / 5500 / 5501Data Gateway
PP_DATA_GATEWAY_PROTOCOLhttpDGW 接続プロトコル(内部 loopback デフォルト http)
PP_DATA_GATEWAY_CONNECT_PORT(派生)DGW 接続ポート。プロトコルに自動整列(http→5500、https→5501)。明示すればその値が優先
PP_TSE_HOST / PP_TSE_PORT / PP_TSE_TLS_PORT${PP_DATALAKE_ANCHOR} / 7800 / 7801時系列エンジン(TSE)。サーバーは http 7800・https 7801 両方 listen
PP_TSE_PROTOCOLhttpTSE クライアント接続プロトコル。内部区間通信のため平文 http がデフォルト — TLS マスタースイッチ(PP_TLS_ENABLED)と分離(2026-08)
PP_TSE_CONNECT_PORT(未設定)env.sh が export しないオペレータ明示オーバーライドフック。テンプレートが ${PP_TSE_CONNECT_PORT:7800} フォールバックとして消費
PP_TSE_JDBC_SCHEMEtsJDBC scheme。平文 ts がデフォルト(jdbc.tse.url テンプレートは ts ハードコード)
PP_TSE_USER / 🔑 PP_TSE_PASSWORDtse / —TSE アカウント
PP_ANALYTICS_USER / 🔑 PP_ANALYTICS_PASSWORDspark / —分析(Spark/Kyuubi クライアント)アカウント。Kyuubi 内部メタストア(PP_HIVE_*)とは分離された別の資格情報
PP_HIVE_HOST / PP_HIVE_PORTPP_MASTER_IP / 9083Hive メタストア
PP_HIVE_USER / 🔑 PP_HIVE_PASSWORDhive / —Hive アカウント
PP_SPARK_HOST / PP_SPARK_PORTPP_MASTER_IP / 7077Spark マスター
PP_KYUUBI_PORT10000Kyuubi SQL ゲートウェイ
PP_GRAVITINO_USER / 🔑 PP_GRAVITINO_PASSWORDgravitino / —Gravitino カタログ
PP_TEMPORAL_HOST / PP_TEMPORAL_PORT${PP_DATALAKE_ANCHOR} / 7233Temporal エンジン(Web UI 8233)
PP_TEMPORAL_USER / 🔑 PP_TEMPORAL_PASSWORDtemporal / —Temporal アカウント
PP_KESTRA_HOST / PP_KESTRA_PORT${PP_DATALAKE_ANCHOR} / 8380Kestra スケジューラー
PP_KESTRA_ADMIN_EMAIL / 🔑 PP_KESTRA_ADMIN_PASSWORDadmin@plantpulse.io / —Kestra 管理者
PP_KESTRA_DB_USER / 🔑 PP_KESTRA_DB_PASSWORDkestra / —Kestra メタ DB

7. プラグイン・観測・Web 階層

変数デフォルト値説明
PP_OPCUA_PORT / PP_OPCUA_TCP_PORT11004OPC-UA opc.tcp プロトコルポート
PP_OPCUA_TLS_PORT11005OPC-UA TLS
PP_AAS_V3_PORT8090AAS(BaSyx V3) API。UI は 8091、Registry/AAS ポート(4800/4801)はコードに固定されており env では変わりません
PP_GRAFANA_PORT3000Grafana ダッシュボード
PP_GRAFANA_ADMIN_USER / 🔑 PP_GRAFANA_ADMIN_PASSWORDadmin / —Grafana 管理者
PP_WEBSOCKET_PORT / PP_WEBSOCKET_PORT_SSL8000 / 8004リアルタイムプッシュ WebSocket
PP_WEBSOCKET_USER / 🔑 PP_WEBSOCKET_SERVER_PASSWORDws / —WebSocket サーバーアカウント
PP_MAIL_SMTP_PORT25アラーム/レポートメール送信 SMTP
PP_MAIL_SMTP_USER / 🔑 PP_MAIL_SMTP_PASSWORDwebmaster@kopens.com / —SMTP アカウント
PP_MAIL_SMTP_AUTH / PP_MAIL_SMTP_STARTTLSfalse / falseSMTP 認証・STARTTLS

8. TLS / SSL

変数デフォルト値説明
PP_TLS_ENABLEDtrueTLS マスタースイッチ — サービスクライアントのデフォルトプロトコルを決定
PP_DEFAULT_PROTOCOL(派生: PP_TLS_ENABLED)サービスクライアントデフォルトプロトコル。PP_TLS_ENABLED=truehttpsfalsehttp。TSE などがこの値を継承し、プロトコル/ポートがスイッチと矛盾しないようにする
PP_TLS_CERT_DIR/var/security/plantpulse証明書ディレクトリ
PP_TLS_DOMAINplantpulse.io証明書ドメイン
🔑 PP_TLS_KEYSTORE_PASSWORD / 🔑 PP_TLS_TRUSTSTORE_PASSWORDkeystore/truststore パスワード(全ノード同一である必要あり)
PP_TLS_VALID_DAYS3650証明書有効期間(日)
PP_TLS_SAN_IPSPP_HOST_IP,…,127.0.0.1証明書 SAN IP。運用では外部接続 IP(例:パブリック IP)を必ず含める
PP_TLS_SAN_DNSlocalhost,<hostname>,<domain>証明書 SAN DNS
PP_TLS_NODE_NAMESmaster worker-1 … worker-5クラスタノード名
PP_TLS_FORCE_REGENERATEfalsetrue 時に証明書を強制再生成

9. API キー / AI ゲートウェイ

すべて開発用デフォルト値(fallback)があります。運用/顧客納品時には Docker -e または export で必ず差し替えてください。

変数説明
🔑 PP_API_KEYプラットフォーム内部 API キー(サーバー ↔ エッジエージェント認証)
🔑 PP_DATA_GATEWAY_API_KEYserver-web → data-gateway JDBC 認証
🔑 PP_CEP_API_KEYserver-web → CEP サーバー X-API-Key(CEP サーバー cep.api.key と一致する必要あり)
🔑 PP_FLOW_WEBHOOK_API_KEYFlow Engine 外部 Webhook 認証
PP_AI_OPENAI_ENABLEDAI ゲートウェイ有効化(デフォルト false)
PP_AI_OPENAI_BASE_URLOpenAI 互換 LLM プロキシ URL(デフォルト https://api.openai.com)
🔑 PP_AI_OPENAI_API_KEYLLM API キー(PP_AI_OPENAI_ENABLED=true の場合に必要)
PP_AI_OPENAI_MODEL使用するモデル(デフォルト gpt-5-mini)

10. 変更後の適用手順

cd /opt/kopens/plantpulse-platform-docker/bin
vi env.sh # 호스트 쪽 값 (DOCKER_* · PP_LANG · PP_TZ 등)
./restart.sh # 스택 재시작 — 준비될 때까지 대기 (종료 코드 0 = 쓸 수 있다)

コンテナが見る値を変える必要があれば compose/docker-compose.yml を直した後、同じ方法で再起動します。設定テンプレートはホストの /etc/kopens/conf にバインドマウントされているためホストから直接編集でき、再インストールしても保持されます。

変数を変えたのに反映されない場合は順番に確認してください。

確認内容
① サイドカーが勝っていないか/etc/kopens/plantpulse-platform.env に同じ名前があれば env.sh もシェル export も負けます → 優先順位
② アプリに届く名前かアプリ6つは env.sh を読みません。compose にないとアプリに届きません
③ 再起動したかロケール・タイムゾーンを含め、ほとんどの値は 起動時にのみ 反映されます
④ パスワードかパスワードはファイル編集では変わりません → パスワードローテーション

詳しい手順は スタートガイド を参照してください。

env-reset.sh をコンテナ内で実行しないでください

データレイクコンテナ内の env-reset.sh は、すべての PP_* を unset した後に env.sh を再度読み込む 開発専用ツール です。ここで実行すると compose が注入した値まで消え、イメージ内蔵のデフォルト値に戻ってしまいます。