forked from meetecho/janus-gateway
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile.alpine
143 lines (136 loc) · 5.32 KB
/
Dockerfile.alpine
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
FROM alpine:3.12.3 AS janus-gw-build
LABEL maintainer="emmanuel.riou@dazzl.tv"
ARG LIBNICE_VER=0.1.17
ARG LIBSRTP_VER=2.2.0
ARG RABBIT_GIT_COMMIT=2ca1774
ARG FFMPEG_VER=4.3.2
WORKDIR /root
COPY . janus-gateway
RUN apk add --update --no-cache --virtual .build-dependencies \
autoconf \
automake \
make \
libtool \
pkgconf \
build-base \
gtk-doc \
wget \
git \
&& apk add --no-cache \
libc6-compat \
jansson-dev \
openssl-dev \
gengetopt-dev \
libconfig-dev \
glib-dev \
nasm \
x264-dev \
&& wget https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VER.tar.bz2 \
&& tar xjvf ffmpeg-$FFMPEG_VER.tar.bz2 \
&& cd ffmpeg-$FFMPEG_VER \
&& ./configure --prefix=/usr --enable-gpl --enable-libx264 \
--disable-programs --enable-shared \
&& make \
&& make install \
&& cd \
&& wget https://libnice.freedesktop.org/releases/libnice-$LIBNICE_VER.tar.gz \
&& tar xzf libnice-$LIBNICE_VER.tar.gz \
&& rm libnice-$LIBNICE_VER.tar.gz \
&& cd libnice-$LIBNICE_VER \
&& ./autogen.sh \
&& CFLAGS="-DG_DISABLE_ASSERT" ./configure --prefix=/usr \
&& make && make install \
&& cd \
&& wget https://github.com/cisco/libsrtp/archive/v$LIBSRTP_VER.tar.gz \
-O libsrtp-v$LIBSRTP_VER.tar.gz \
&& tar xzf libsrtp-v$LIBSRTP_VER.tar.gz \
&& rm libsrtp-v$LIBSRTP_VER.tar.gz && cd libsrtp-$LIBSRTP_VER \
&& ./configure --prefix=/usr --enable-openssl \
&& make shared_library && make install \
&& cd \
&& git clone https://github.com/sctplab/usrsctp \
&& cd usrsctp \
&& ./bootstrap \
&& ./configure --prefix=/usr \
&& make && make install \
&& cd \
&& git clone https://github.com/alanxz/rabbitmq-c \
&& cd rabbitmq-c \
&& git checkout $RABBIT_GIT_COMMIT \
&& git submodule init \
&& git submodule update \
&& autoreconf -i \
&& ./configure --prefix=/usr \
&& make && make install \
&& cd \
&& cd janus-gateway \
&& sh autogen.sh \
&& ./configure --prefix=/usr/local \
--disable-turn-rest-api \
--disable-all-plugins \
--disable-all-handlers \
--disable-all-loggers \
--disable-all-transports \
--disable-post-processing \
--enable-rabbitmq \
--enable-record-multipart \
--disable-docs \
--enable-data-channels \
&& make clean \
&& make \
&& make configs \
&& make install \
## Cleaning \
&& apk del --purge .build-dependencies \
&& cd \
&& rm -rf libnice-$LIBNICE_VER \
libsrtp-$LIBSRTP_VER \
usrsctp \
rabbitmq-c \
janus-gateway \
/var/cache/apk/*
#Final stage
FROM alpine:3.12.3
## ffmpeg libs and dependencies (.pc are needed for the configure of janus plugin)
COPY --from=janus-gw-build /usr/lib/libswresample.so.3 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libavformat.so.58 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libavcodec.so.58 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libavutil.so.56 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libx264.so.157 /usr/lib/
COPY --from=janus-gw-build /usr/lib/pkgconfig/libavformat.pc /usr/lib/pkgconfig/
COPY --from=janus-gw-build /usr/lib/pkgconfig/libavcodec.pc /usr/lib/pkgconfig/
COPY --from=janus-gw-build /usr/lib/pkgconfig/libswresample.pc /usr/lib/pkgconfig/
COPY --from=janus-gw-build /usr/lib/pkgconfig/libavutil.pc /usr/lib/pkgconfig/
COPY --from=janus-gw-build /usr/include/libavcodec/ /usr/include/libavcodec/
COPY --from=janus-gw-build /usr/include/libavformat/ /usr/include/libavformat/
COPY --from=janus-gw-build /usr/include/libswresample/ /usr/include/libswresample/
COPY --from=janus-gw-build /usr/include/libavutil/ /usr/include/libavutil/
## janus binary, includes (to compile plugin), and janus rabbit transport lib
COPY --from=janus-gw-build /usr/local/bin/janus /usr/local/bin/
COPY --from=janus-gw-build /usr/local/include/janus/ /usr/local/include/janus/
COPY --from=janus-gw-build /usr/local/lib/janus/transports/libjanus_rabbitmq.so \
/usr/local/lib/janus/transports/
## janus binary dependencies
COPY --from=janus-gw-build /usr/lib/libconfig.so.11 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libnice.so.10 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libgio-2.0.so.0 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libgobject-2.0.so.0 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libglib-2.0.so.0 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libjansson.so.4 /usr/lib/
COPY --from=janus-gw-build /lib/libssl.so.1.1 /usr/lib/
COPY --from=janus-gw-build /lib/libz.so.1 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libusrsctp.so.2 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libsrtp2.so.1 /usr/lib/
COPY --from=janus-gw-build /lib/libcrypto.so.1.1 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libgmodule-2.0.so.0 /usr/lib/
COPY --from=janus-gw-build /lib/libmount.so.1 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libintl.so.8 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libffi.so.7 /usr/lib/
COPY --from=janus-gw-build /usr/lib/libpcre.so.1 /usr/lib/
COPY --from=janus-gw-build /lib/libblkid.so.1 /usr/lib/
## libjanus_rabbitmq.so dependencies
COPY --from=janus-gw-build /usr/lib/librabbitmq.so.4 /usr/lib/
RUN ln -s /usr/lib/libavcodec.so.58 /usr/lib/libavcodec.so \
&& ln -s /usr/lib/libavformat.so.58 /usr/lib/libavformat.so \
&& ln -s /usr/lib/libavutil.so.56 /usr/lib/libavutil.so \
&& ln -s /usr/lib/libswresample.so.3 /usr/lib/libswresample.so