-
-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathDockerfile
168 lines (151 loc) · 5.15 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#
# filebot Dockerfile
#
# https://github.com/jlesage/docker-filebot
#
# Docker image version is provided via build arg.
ARG DOCKER_IMAGE_VERSION=
# Define software versions.
ARG FILEBOT_VERSION=5.1.5
ARG MEDIAINFOLIB_VERSION=24.06
ARG ZENLIB_VERSION=0.4.41
ARG UNRAR_VERSION=6.1.7
# Define software download URLs.
ARG FILEBOT_URL=https://get.filebot.net/filebot/FileBot_${FILEBOT_VERSION}/FileBot_${FILEBOT_VERSION}-portable.tar.xz
ARG MEDIAINFOLIB_URL=https://mediaarea.net/download/source/libmediainfo/${MEDIAINFOLIB_VERSION}/libmediainfo_${MEDIAINFOLIB_VERSION}.tar.xz
ARG ZENLIB_URL=https://mediaarea.net/download/source/libzen/${ZENLIB_VERSION}/libzen_${ZENLIB_VERSION}.tar.gz
ARG UNRAR_URL=https://www.rarlab.com/rar/unrarsrc-${UNRAR_VERSION}.tar.gz
# Get Dockerfile cross-compilation helpers.
FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx
# Get FileBot
FROM --platform=$BUILDPLATFORM alpine:3.16 AS filebot
ARG FILEBOT_URL
RUN \
apk --no-cache add curl && \
# Download sources.
mkdir /tmp/filebot && \
curl -# -L -f ${FILEBOT_URL} | tar xJ -C /tmp/filebot && \
# Install.
mkdir /opt/filebot && \
cp -Rv /tmp/filebot/jar /opt/filebot/
# Build unrar. It has been moved to non-free since Alpine 3.15.
# https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.15.0#unrar_moved_to_non-free
FROM --platform=$BUILDPLATFORM alpine:3.16 AS unrar
ARG TARGETPLATFORM
ARG UNRAR_URL
COPY --from=xx / /
COPY src/unrar /build
RUN /build/build.sh "$UNRAR_URL"
RUN xx-verify \
/tmp/unrar-install/usr/bin/unrar
# Build MediaInfoLib.
FROM --platform=$BUILDPLATFORM alpine:3.16 AS libmediainfo
ARG TARGETPLATFORM
ARG MEDIAINFOLIB_URL
ARG ZENLIB_URL
COPY --from=xx / /
COPY src/libmediainfo /build
RUN /build/build.sh "$MEDIAINFOLIB_URL" "$ZENLIB_URL"
RUN xx-verify \
/tmp/libmediainfo-install/usr/lib/libmediainfo.so \
/tmp/libmediainfo-install/usr/lib/libzen.so
# Pull base image.
FROM jlesage/baseimage-gui:alpine-3.16-v4.6.4
ARG FILEBOT_VERSION
ARG DOCKER_IMAGE_VERSION
# Define working directory.
WORKDIR /tmp
# Install dependencies.
RUN \
add-pkg \
bash \
p7zip \
findutils \
coreutils \
curl \
gtk+3.0 \
ttf-dejavu \
adwaita-icon-theme \
openjdk17-jre \
java-jna-native \
# For chromaprint (fpcalc)
chromaprint \
# For libmediainfo.
tinyxml2 \
# Used by Filebot as the open file window.
zenity \
&& \
# Remove unneeded icons.
rm -r /usr/share/icons/Adwaita/cursors && \
find /usr/share/icons/Adwaita -type f -name "*.svg" -delete && \
find /usr/share/icons/Adwaita -type f -name "*.png" \
! -path "*/mimetypes/*" \
! -name bookmark-new-symbolic.symbolic.png \
! -name dialog-information.png \
! -name dialog-warning.png \
! -name document-open-recent-symbolic.symbolic.png \
! -name drive-harddisk.png \
! -name drive-harddisk-symbolic.symbolic.png \
! -name folder-new-symbolic.symbolic.png \
! -name image-missing.png \
! -name list-add-symbolic.symbolic.png \
! -name media-eject-symbolic.symbolic.png \
! -name pan-up-symbolic.symbolic.png \
! -name pan-down-symbolic.symbolic.png \
! -name pan-end-symbolic.symbolic.png \
! -name pan-start-symbolic.symbolic.png \
! -name user-desktop-symbolic.symbolic.png \
! -name user-home.png \
! -name user-home-symbolic.symbolic.png \
! -name user-trash-symbolic.symbolic.png \
-delete
# Generate and install favicons.
RUN \
APP_ICON_URL=https://raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/filebot-icon.png && \
install_app_icon.sh "$APP_ICON_URL"
# Add files.
COPY rootfs/ /
COPY --from=filebot /opt/filebot /opt/filebot
COPY --from=libmediainfo /tmp/libmediainfo-install/usr/lib /usr/lib
COPY --from=unrar /tmp/unrar-install/usr/bin/unrar /usr/bin/unrar
# Set internal environment variables.
RUN \
set-cont-env APP_NAME "FileBot" && \
set-cont-env APP_VERSION "$FILEBOT_VERSION" && \
set-cont-env DOCKER_IMAGE_VERSION "$DOCKER_IMAGE_VERSION" && \
true
# Set public environment variables.
ENV \
FILEBOT_GUI=1 \
AMC_ENABLED=1 \
USE_FILEBOT_BETA=0 \
FILEBOT_CUSTOM_OPTIONS= \
OPENSUBTITLES_USERNAME= \
OPENSUBTITLES_PASSWORD= \
AMC_INTERVAL=1800 \
AMC_INPUT_STABLE_TIME=10 \
AMC_ACTION=test \
AMC_CONFLICT=auto \
AMC_MATCH_MODE=opportunistic \
AMC_ARTWORK=n \
AMC_LANG=English \
AMC_MUSIC_FORMAT="{plex}" \
AMC_MOVIE_FORMAT="{plex}" \
AMC_SERIES_FORMAT="{plex}" \
AMC_ANIME_FORMAT="{plex}" \
AMC_PROCESS_MUSIC=y \
AMC_SUBTITLE_LANG= \
AMC_CUSTOM_OPTIONS= \
AMC_INPUT_DIR=/watch \
AMC_OUTPUT_DIR=/output
# Define mountable directories.
VOLUME ["/storage"]
VOLUME ["/output"]
VOLUME ["/watch"]
# Metadata.
LABEL \
org.label-schema.name="filebot" \
org.label-schema.description="Docker container for FileBot" \
org.label-schema.version="${DOCKER_IMAGE_VERSION:-unknown}" \
org.label-schema.vcs-url="https://github.com/jlesage/docker-filebot" \
org.label-schema.schema-version="1.0"