fix(romhacks): build on Alpine DCE base (apk + self-contained CLI)
The tyrrrz/discordchatexporter image is Alpine, not Debian, and ships DCE as a self-contained executable (no dotnet on PATH). Use apk for python3 and invoke /opt/app/DiscordChatExporter.Cli directly.
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# Orchestrator = DiscordChatExporter (has .NET + the DCE CLI) + Python for parsing.
|
||||
# Orchestrator = DiscordChatExporter (self-contained .NET CLI at
|
||||
# /opt/app/DiscordChatExporter.Cli) + Python3 for parsing. The DCE image is
|
||||
# Alpine-based, so install via apk. The parser uses only the stdlib (no pip deps).
|
||||
# Baking scripts + channels.json into the image avoids Portainer's relative
|
||||
# FILE-bind quirk (see docker-compose.yml header).
|
||||
FROM tyrrrz/discordchatexporter:stable
|
||||
|
||||
USER root
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends python3 python3-requests \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
RUN apk add --no-cache python3
|
||||
|
||||
WORKDIR /app
|
||||
COPY orchestrate.py run.sh channels.json ./
|
||||
|
||||
@@ -57,22 +57,23 @@ def slug(s):
|
||||
|
||||
|
||||
def find_dce():
|
||||
direct = "/opt/app/DiscordChatExporter.Cli.dll"
|
||||
# Self-contained single-file executable in the Alpine DCE image (no `dotnet`).
|
||||
direct = "/opt/app/DiscordChatExporter.Cli"
|
||||
if os.path.exists(direct):
|
||||
return direct
|
||||
hits = glob.glob("/opt/**/DiscordChatExporter.Cli.dll", recursive=True)
|
||||
hits = glob.glob("/opt/**/DiscordChatExporter.Cli", recursive=True)
|
||||
return hits[0] if hits else None
|
||||
|
||||
|
||||
def run_dce(channel_id):
|
||||
dll = find_dce()
|
||||
if not dll:
|
||||
print("[romhacks] DiscordChatExporter.Cli.dll not found in image", file=sys.stderr)
|
||||
dce = find_dce()
|
||||
if not dce:
|
||||
print("[romhacks] DiscordChatExporter.Cli not found in image", file=sys.stderr)
|
||||
return False
|
||||
out = EXPORTS / channel_id
|
||||
out.mkdir(parents=True, exist_ok=True)
|
||||
cmd = [
|
||||
"dotnet", dll, "export",
|
||||
dce, "export",
|
||||
"-t", TOKEN,
|
||||
"-c", channel_id,
|
||||
"-f", "Json",
|
||||
|
||||
Reference in New Issue
Block a user