diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e8a79ca --- /dev/null +++ b/Dockerfile @@ -0,0 +1,68 @@ +FROM alpine:3.19 AS builder + +RUN apk add --no-cache cargo + +RUN mkdir /src +COPY . /src +WORKDIR /src + +RUN cargo build --release --no-default-features + +# ############################################## + +FROM alpine:3.19 + +ARG ffmpeg_ver=7.0 + +RUN apk add --no-cache \ + dav1d fontconfig freetype harfbuzz librsvg libva lilv-libs opus svt-av1 x264-libs x265 \ + font-noto inkscape libarchive-tools libgcc \ + # we install ffmpeg ourselves to get libsvtav1 support which is not part of the alpine package \ + && apk add --no-cache --virtual .build-deps \ + build-base \ + dav1d-dev fontconfig-dev freetype-dev harfbuzz-dev librsvg-dev libva-dev lilv-dev opus-dev svt-av1-dev x264-dev x265-dev \ + && wget -q https://ffmpeg.org/releases/ffmpeg-${ffmpeg_ver}.tar.bz2 \ + && tar xfa ffmpeg-${ffmpeg_ver}.tar.bz2 \ + && cd ffmpeg-${ffmpeg_ver} \ + && ./configure \ + --prefix=/usr/local \ + --disable-asm \ + --disable-librtmp \ + --disable-lzma \ + --disable-static \ + --enable-avfilter \ + --enable-gpl \ + --enable-libdav1d \ + --enable-libfontconfig \ + --enable-libfreetype \ + --enable-libharfbuzz \ + --enable-libopus \ + --enable-librsvg \ + --enable-libsvtav1 \ + --enable-libx264 \ + --enable-libx265 \ + --enable-lto=auto \ + --enable-lv2 \ + --enable-pic \ + --enable-postproc \ + --enable-pthreads \ + --enable-shared \ + --enable-vaapi \ + --enable-version3 \ + --optflags="-O3" \ + && make -j$(nproc) install \ + && apk del --no-cache .build-deps \ + && cd .. \ + && rm -r ffmpeg-${ffmpeg_ver} ffmpeg-${ffmpeg_ver}.tar.bz2 \ + # we need Arial Black for the VideoAG logo \ + && wget -q https://www.freedesktop.org/software/fontconfig/webfonts/webfonts.tar.gz \ + && tar xfa webfonts.tar.gz \ + && cd msfonts \ + && for file in *.exe; do bsdtar xf "$file"; done \ + && install -Dm644 -t /usr/share/fonts/msfonts/ *.ttf *.TTF \ + && install -Dm644 -t /usr/share/licenses/msfonts/ Licen.TXT \ + && cd .. \ + && rm -r msfonts webfonts.tar.gz +COPY --from=builder /src/target/release/render_video /usr/local/bin/render_video + +ENTRYPOINT ["/usr/local/bin/render_video"] diff --git a/src/iotro.rs b/src/iotro.rs index 683eb10..4f98798 100644 --- a/src/iotro.rs +++ b/src/iotro.rs @@ -94,6 +94,12 @@ pub const BRITISH: Language<'static> = Language { questions_feedback: "Questions, Suggestions and Feedback" }; +impl Default for Language<'static> { + fn default() -> Self { + GERMAN + } +} + impl FromStr for Language<'static> { type Err = anyhow::Error; diff --git a/src/main.rs b/src/main.rs index 1e46727..048fa36 100644 --- a/src/main.rs +++ b/src/main.rs @@ -154,6 +154,7 @@ struct ProjectLecture { docent: String, #[serde_as(as = "DisplayFromStr")] date: Date, + #[serde(default = "Default::default")] #[serde_as(as = "DisplayFromStr")] lang: Language<'static> }