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
|
# Baking scripts + channels.json into the image avoids Portainer's relative
|
||||||
# FILE-bind quirk (see docker-compose.yml header).
|
# FILE-bind quirk (see docker-compose.yml header).
|
||||||
FROM tyrrrz/discordchatexporter:stable
|
FROM tyrrrz/discordchatexporter:stable
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
RUN apt-get update \
|
RUN apk add --no-cache python3
|
||||||
&& apt-get install -y --no-install-recommends python3 python3-requests \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY orchestrate.py run.sh channels.json ./
|
COPY orchestrate.py run.sh channels.json ./
|
||||||
|
|||||||
@@ -57,22 +57,23 @@ def slug(s):
|
|||||||
|
|
||||||
|
|
||||||
def find_dce():
|
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):
|
if os.path.exists(direct):
|
||||||
return 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
|
return hits[0] if hits else None
|
||||||
|
|
||||||
|
|
||||||
def run_dce(channel_id):
|
def run_dce(channel_id):
|
||||||
dll = find_dce()
|
dce = find_dce()
|
||||||
if not dll:
|
if not dce:
|
||||||
print("[romhacks] DiscordChatExporter.Cli.dll not found in image", file=sys.stderr)
|
print("[romhacks] DiscordChatExporter.Cli not found in image", file=sys.stderr)
|
||||||
return False
|
return False
|
||||||
out = EXPORTS / channel_id
|
out = EXPORTS / channel_id
|
||||||
out.mkdir(parents=True, exist_ok=True)
|
out.mkdir(parents=True, exist_ok=True)
|
||||||
cmd = [
|
cmd = [
|
||||||
"dotnet", dll, "export",
|
dce, "export",
|
||||||
"-t", TOKEN,
|
"-t", TOKEN,
|
||||||
"-c", channel_id,
|
"-c", channel_id,
|
||||||
"-f", "Json",
|
"-f", "Json",
|
||||||
|
|||||||
Reference in New Issue
Block a user