Skip to content

Commit c1c5d14

Browse files
committed
chore: move to rebuilt binaries for tuliprox
1 parent 5f9e2c6 commit c1c5d14

File tree

3 files changed

+26
-135
lines changed

3 files changed

+26
-135
lines changed

apps/tuliprox/Dockerfile

Lines changed: 16 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -2,123 +2,24 @@ FROM alpine AS cloner
22

33
ARG VERSION
44

5-
WORKDIR /src
5+
RUN mkdir -p /app /config && \
6+
apk add --update --no-cache wget && \
7+
wget -O /tmp/tuliprox.tgz https://github.com/euzu/tuliprox/releases/download/v${VERSION}/tuliprox_v${VERSION}_linux_x86_64.tgz && \
8+
tar -xzf /tmp/tuliprox.tgz -C /app --strip-components=1 && \
9+
chmod +x /app/tuliprox && \
10+
mkdir -p /app/resources && \
11+
mv /app/*.ts /app/resources/ && \
12+
mv /app/*.yml /config && \
13+
touch /config/user.txt && \
14+
rm -rf /tmp/tuliprox*
615

7-
RUN apk add --update --no-cache git && \
8-
git clone -b v$VERSION https://github.com/euzu/tuliprox.git .
16+
FROM ghcr.io/ipromknight/ubuntu:rolling
917

10-
FROM rust:bookworm AS rust-build
11-
12-
ARG RUST_TARGET=x86_64-unknown-linux-musl
13-
14-
RUN apt-get update && apt-get install -y --no-install-recommends pkg-config musl-tools libssl-dev
15-
RUN rustup update && rustup target add $RUST_TARGET
16-
ENV RUSTFLAGS='--remap-path-prefix $HOME=~ -C target-feature=+crt-static'
17-
18-
COPY --from=cloner /src/Cargo.toml /src/Cargo.lock /src/
19-
COPY --from=cloner /src/backend/Cargo.toml /src/backend/
20-
COPY --from=cloner /src/frontend/Cargo.toml /src/frontend/
21-
COPY --from=cloner /src/shared/Cargo.toml /src/shared/
22-
23-
RUN mkdir -p /src/src /src/backend/src /src/frontend/src /src/shared/src && \
24-
echo "fn main() {}" > /src/src/main.rs && \
25-
echo "fn main() {}" > /src/backend/src/main.rs && \
26-
echo "fn main() {}" > /src/frontend/src/main.rs && \
27-
echo "pub fn dummy() {}" > /src/shared/src/lib.rs
28-
29-
WORKDIR /src
30-
31-
RUN cargo build -p tuliprox --target $RUST_TARGET --release || true
32-
RUN cargo build -p shared --target $RUST_TARGET --release || true
33-
34-
COPY --from=cloner /src/ .
35-
36-
RUN cargo build -p tuliprox --target $RUST_TARGET --release
37-
38-
FROM rust:bookworm AS trunk-build
39-
40-
ARG RUST_TARGET=x86_64-unknown-linux-musl
41-
42-
RUN apt-get update && apt-get install -y --no-install-recommends \
43-
pkg-config libssl-dev curl libclang-dev binaryen
44-
45-
RUN rustup target add wasm32-unknown-unknown
46-
RUN cargo install --locked trunk wasm-bindgen-cli
47-
48-
COPY --from=cloner /src/Cargo.toml /src/Cargo.lock /src/
49-
COPY --from=cloner /src/frontend/Cargo.toml /src/frontend/Trunk.toml /src/frontend/
50-
COPY --from=cloner /src/shared/Cargo.toml /src/shared/
51-
52-
RUN mkdir -p /src/frontend/src /src/shared/src && \
53-
echo "fn main() {}" > /src/frontend/src/main.rs && \
54-
echo "pub fn dummy() {}" > /src/shared/src/lib.rs
55-
56-
WORKDIR /src/frontend
57-
58-
RUN cargo build --target wasm32-unknown-unknown --release || true
59-
60-
COPY --from=cloner /src/ /src/
61-
62-
WORKDIR /src/frontend
63-
64-
RUN trunk build --release
65-
66-
# -----------------------------------------------------------------
67-
# Stage 3: Build video resources with ffmpeg
68-
# -----------------------------------------------------------------
69-
FROM linuxserver/ffmpeg:latest AS resource-build
70-
71-
COPY --from=cloner /src/resources /src/resources
72-
73-
RUN ffmpeg -loop 1 -i /src/resources/channel_unavailable.jpg -t 10 -r 1 -an \
74-
-vf "scale=1920:1080" \
75-
-c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \
76-
/src/resources/channel_unavailable.ts && \
77-
ffmpeg -loop 1 -i /src/resources/user_connections_exhausted.jpg -t 10 -r 1 -an \
78-
-vf "scale=1920:1080" \
79-
-c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \
80-
/src/resources/user_connections_exhausted.ts && \
81-
ffmpeg -loop 1 -i /src/resources/provider_connections_exhausted.jpg -t 10 -r 1 -an \
82-
-vf "scale=1920:1080" \
83-
-c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \
84-
/src/resources/provider_connections_exhausted.ts && \
85-
ffmpeg -loop 1 -i /src/resources/user_account_expired.jpg -t 10 -r 1 -an \
86-
-vf "scale=1920:1080" \
87-
-c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \
88-
/src/resources/user_account_expired.ts
89-
90-
FROM alpine:latest AS tz-prep
91-
92-
ARG TZ=UTC
93-
ENV TZ=${TZ}
94-
95-
RUN apk add --no-cache tzdata \
96-
&& mkdir -p /output/etc \
97-
&& mkdir -p /output/usr/share \
98-
&& cp -r /usr/share/zoneinfo /output/usr/share/zoneinfo \
99-
&& ln -sf /usr/share/zoneinfo/${TZ} /output/etc/localtime
100-
101-
102-
FROM ghcr.io/ipromknight/alpine:rolling
103-
104-
ARG RUST_TARGET=x86_64-unknown-linux-musl
105-
ARG TZ=UTC
106-
ENV TZ=${TZ}
107-
108-
RUN apk add --no-cache bash curl ca-certificates tini
109-
110-
COPY --from=tz-prep /output/usr/share/zoneinfo /usr/share/zoneinfo
111-
COPY --from=rust-build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
112-
113-
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime
18+
LABEL org.opencontainers.image.title="tuliprox"
11419

11520
WORKDIR /app
116-
COPY --from=rust-build /src/target/${RUST_TARGET}/release/tuliprox /app/tuliprox
117-
COPY --from=trunk-build /src/frontend/dist /app/web
118-
COPY --from=resource-build /src/resources /app/resources
119-
21+
ENV TULIPROX_HOME="/app"
22+
COPY --from=cloner /app .
23+
COPY --from=cloner /config /config
24+
COPY --chmod=0755 ./apps/tuliprox/promknight-entrypoint.sh /promknight-entrypoint.sh
12025
USER 568
121-
122-
EXPOSE 8901
123-
124-
COPY --chmod=0755 apps/tuliprox/promknight-entrypoint.sh /promknight-entrypoint.sh

apps/tuliprox/ci/goss.yaml

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,12 @@
11
---
2-
file:
3-
/app/tuliprox:
4-
exists: true
5-
mode: "0755"
2+
process:
3+
tuliprox:
4+
running: true
65

7-
command:
8-
tuliprox-version:
9-
exec: "/app/tuliprox -V"
10-
exit-status: 0
11-
stdout:
12-
- '/^[a-zA-Z0-9._-]*\s*[0-9]+\.[0-9]+\.[0-9]+.*$/'
6+
port:
7+
tcp:8901:
8+
listening: true
139

14-
tuliprox-smoke-no-config:
15-
# Capture stderr too, and don't fail the test on non-zero exit
16-
exec: sh -c '/app/tuliprox -s -p /app/config -l info 2>&1 || true'
17-
exit-status: 0
18-
stdout:
19-
- "Log Level info"
20-
- "Version:"
21-
- "Build time:"
22-
- "Tuliprox error: Can't read the config file"
10+
http:
11+
http://127.0.0.1:8901:
12+
status: 200

apps/tuliprox/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
],
1010
"stable": true,
1111
"tests": {
12-
"enabled": false,
12+
"enabled": true,
1313
"type": "cli"
1414
}
1515
}

0 commit comments

Comments
 (0)