Skip to content

Commit b9f58ca

Browse files
RokamunThulinma
andcommitted
Improvements to Docker builds
Co-authored-by: Thulinma <jaron@vietors.com>
1 parent 7058ce1 commit b9f58ca

5 files changed

Lines changed: 150 additions & 9 deletions

File tree

.dockerignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
build
22
.git
3-
Dockerfile
3+
Dockerfile.*
44

Dockerfile.mistserver

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,53 @@
11
FROM alpine AS mist_build
2+
# Pull in build requirements
3+
RUN apk add --no-cache git patch meson ninja gcc g++ linux-headers pigz curl cjson pkgconfig
24

3-
RUN apk add --no-cache git patch meson ninja gcc g++ linux-headers pigz curl
5+
# Build dependencies librist, libsrt, libsrtp2, usrsctplib, mbedtls
6+
RUN mkdir -p /deps/build/mbedtls /deps/build/libsrtp /deps/build/libsrt /deps/build/librist /deps/build/usrsctp /deps/mbedtls /deps/libsrtp /deps/libsrt /deps/librist /deps/usrsctp
7+
8+
# mbedtls
9+
ADD --unpack=true https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-3.6.5/mbedtls-3.6.5.tar.bz2 /deps
10+
ADD subprojects/packagefiles/mbedtls/meson.build /deps/mbedtls-3.6.5/
11+
ADD subprojects/packagefiles/mbedtls/include/mbedtls/mbedtls_config.h /deps/mbedtls-3.6.5/include/mbedtls/
12+
RUN cd /deps/build/mbedtls/ && meson setup /deps/mbedtls-3.6.5 -Dstrip=true && meson install
13+
14+
# srtp
15+
ADD https://github.com/cisco/libsrtp.git#v2.6.0 /deps/libsrtp
16+
RUN cd /deps/build/libsrtp/ && meson setup /deps/libsrtp -Dstrip=true && meson install
17+
18+
# srt
19+
ADD https://github.com/Haivision/srt.git#v1.5.4 /deps/libsrt
20+
ADD subprojects/packagefiles/libsrt/meson.build /deps/libsrt/
21+
ADD subprojects/packagefiles/libsrt/srt/meson.build /deps/libsrt/srt/
22+
RUN cd /deps/build/libsrt/ && meson setup /deps/libsrt -Dstrip=true && meson install
23+
24+
# librist
25+
ADD https://code.videolan.org/rist/librist.git#v0.2.11 /deps/librist
26+
RUN cd /deps/build/librist/ && meson setup /deps/librist -Dstrip=true && meson install
27+
28+
# usrsctp
29+
ADD https://github.com/sctplab/usrsctp.git#0.9.5.0 /deps/usrsctp
30+
RUN cd /deps/build/usrsctp/ && meson setup /deps/usrsctp -Dstrip=true && meson install
31+
32+
# Build MistServer from local source
433
ADD . /src/
34+
ARG MIST_OPTS
35+
ARG DEBUG=3
36+
ARG VERSION=Unknown
37+
ARG TARGETPLATFORM
38+
ARG RELEASE=Docker_${TARGETPLATFORM}
39+
RUN mkdir /build/ && cd /build && meson setup /src -DDOCKERRUN=true -DNOUPDATE=true -DDEBUG=${DEBUG} -DVERSION=${VERSION} -DRELEASE=${RELEASE} -Dstrip=true ${MIST_OPTS} && ninja install
540

41+
# Upload debug symbols if requested
642
ARG OUTPUT_DBG
43+
RUN if [ -n "${OUTPUT_DBG+x}" ]; then tar cf - /build /src /deps | pigz -6 | curl --upload-file - "${OUTPUT_DBG}" ; fi
744

8-
RUN mkdir /build/; cd /build; meson setup /src -DDOCKERRUN=true -Dlibrist:default_library=static -Dmbedtls:default_library=static -DDEBUG=3 -Dstrip=true; ninja install; if [ -n "${OUTPUT_DBG+x}" ]; then tar cf - /build /src | pigz -6 | curl --upload-file - "${OUTPUT_DBG}" ; fi
9-
45+
# Prepare final image from stripped (installed) copy of build
1046
FROM alpine
11-
RUN apk add --no-cache libstdc++
47+
RUN apk add --no-cache libstdc++ cjson
1248
COPY --from=mist_build /usr/local/ /usr/local/
13-
1449
LABEL org.opencontainers.image.authors="Jaron Viëtor <jaron.vietor@ddvtech.com>"
15-
EXPOSE 4242 8080 1935 5554
50+
EXPOSE 4242 8080 1935 5554 8889/udp 18203/udp
1651
ENTRYPOINT ["MistController"]
1752
HEALTHCHECK CMD ["MistUtilHealth"]
53+

meson.build

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ if git.found()
3131
if fs.is_file('VERSION')
3232
version = fs.read('VERSION').strip()
3333
else
34-
version = 'Unknown'
34+
version = get_option('VERSION')
3535
endif
3636
endif
3737
else
3838
fs = import('fs')
3939
if fs.is_file('VERSION')
4040
version = fs.read('VERSION').strip()
4141
else
42-
version = 'Unknown'
42+
version = get_option('VERSION')
4343
endif
4444
endif
4545

meson_options.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ option('STAT_CUTOFF', description: 'Time in seconds that statistics history is k
1717
option('NORIST', description: 'Disable building RIST support, regardless of library being present (by default RIST is enabled if libraries are installed)', type : 'boolean', value : false)
1818
option('NOSRT', description: 'Disable building SRT support, regardless of library being present (by default SRT is enabled if libraries are installed)', type : 'boolean', value : false)
1919
option('RELEASE', description: 'Release string used in the reported version information', type: 'string', value: 'DEFAULT')
20+
option('VERSION', description: 'Version string used in the reported version information', type: 'string', value: 'Unknown')
2021
option('DEBUG', description: 'Default debug level. Recommended value for development is 4, recommended value for production is 3', type: 'integer', value: 4)
2122
option('NOGA', description: 'Disables Google Analytics entirely in the LSP', type: 'boolean', value: false)
2223
option('LOAD_BALANCE', description: 'Build the load balancer (WIP)', type: 'boolean', value: false)

subprojects/packagefiles/mbedtls/meson.build

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,108 @@ add_project_arguments(['-Wno-stringop-overflow'], language: 'c')
33

44
incl = include_directories('include')
55

6+
install_headers(
7+
'include/mbedtls/aes.h',
8+
'include/mbedtls/aria.h',
9+
'include/mbedtls/asn1.h',
10+
'include/mbedtls/asn1write.h',
11+
'include/mbedtls/base64.h',
12+
'include/mbedtls/bignum.h',
13+
'include/mbedtls/block_cipher.h',
14+
'include/mbedtls/build_info.h',
15+
'include/mbedtls/camellia.h',
16+
'include/mbedtls/ccm.h',
17+
'include/mbedtls/chacha20.h',
18+
'include/mbedtls/chachapoly.h',
19+
'include/mbedtls/check_config.h',
20+
'include/mbedtls/cipher.h',
21+
'include/mbedtls/cmac.h',
22+
'include/mbedtls/compat-2.x.h',
23+
'include/mbedtls/config_adjust_legacy_crypto.h',
24+
'include/mbedtls/config_adjust_legacy_from_psa.h',
25+
'include/mbedtls/config_adjust_psa_from_legacy.h',
26+
'include/mbedtls/config_adjust_psa_superset_legacy.h',
27+
'include/mbedtls/config_adjust_ssl.h',
28+
'include/mbedtls/config_adjust_x509.h',
29+
'include/mbedtls/config_psa.h',
30+
'include/mbedtls/constant_time.h',
31+
'include/mbedtls/ctr_drbg.h',
32+
'include/mbedtls/debug.h',
33+
'include/mbedtls/des.h',
34+
'include/mbedtls/dhm.h',
35+
'include/mbedtls/ecdh.h',
36+
'include/mbedtls/ecdsa.h',
37+
'include/mbedtls/ecjpake.h',
38+
'include/mbedtls/ecp.h',
39+
'include/mbedtls/entropy.h',
40+
'include/mbedtls/error.h',
41+
'include/mbedtls/gcm.h',
42+
'include/mbedtls/hkdf.h',
43+
'include/mbedtls/hmac_drbg.h',
44+
'include/mbedtls/lms.h',
45+
'include/mbedtls/md.h',
46+
'include/mbedtls/md5.h',
47+
'include/mbedtls/memory_buffer_alloc.h',
48+
'include/mbedtls/net_sockets.h',
49+
'include/mbedtls/nist_kw.h',
50+
'include/mbedtls/oid.h',
51+
'include/mbedtls/pem.h',
52+
'include/mbedtls/pk.h',
53+
'include/mbedtls/pkcs12.h',
54+
'include/mbedtls/pkcs5.h',
55+
'include/mbedtls/pkcs7.h',
56+
'include/mbedtls/platform.h',
57+
'include/mbedtls/platform_time.h',
58+
'include/mbedtls/platform_util.h',
59+
'include/mbedtls/poly1305.h',
60+
'include/mbedtls/private_access.h',
61+
'include/mbedtls/psa_util.h',
62+
'include/mbedtls/ripemd160.h',
63+
'include/mbedtls/rsa.h',
64+
'include/mbedtls/sha1.h',
65+
'include/mbedtls/sha256.h',
66+
'include/mbedtls/sha3.h',
67+
'include/mbedtls/sha512.h',
68+
'include/mbedtls/ssl.h',
69+
'include/mbedtls/ssl_cache.h',
70+
'include/mbedtls/ssl_ciphersuites.h',
71+
'include/mbedtls/ssl_cookie.h',
72+
'include/mbedtls/ssl_ticket.h',
73+
'include/mbedtls/threading.h',
74+
'include/mbedtls/timing.h',
75+
'include/mbedtls/version.h',
76+
'include/mbedtls/x509.h',
77+
'include/mbedtls/x509_crl.h',
78+
'include/mbedtls/x509_crt.h',
79+
'include/mbedtls/x509_csr.h',
80+
'include/mbedtls/mbedtls_config.h',
81+
subdir: 'mbedtls')
82+
install_headers(
83+
'include/psa/build_info.h',
84+
'include/psa/crypto.h',
85+
'include/psa/crypto_adjust_auto_enabled.h',
86+
'include/psa/crypto_adjust_config_dependencies.h',
87+
'include/psa/crypto_adjust_config_key_pair_types.h',
88+
'include/psa/crypto_adjust_config_synonyms.h',
89+
'include/psa/crypto_builtin_composites.h',
90+
'include/psa/crypto_builtin_key_derivation.h',
91+
'include/psa/crypto_builtin_primitives.h',
92+
'include/psa/crypto_compat.h',
93+
'include/psa/crypto_config.h',
94+
'include/psa/crypto_driver_common.h',
95+
'include/psa/crypto_driver_contexts_composites.h',
96+
'include/psa/crypto_driver_contexts_key_derivation.h',
97+
'include/psa/crypto_driver_contexts_primitives.h',
98+
'include/psa/crypto_extra.h',
99+
'include/psa/crypto_legacy.h',
100+
'include/psa/crypto_platform.h',
101+
'include/psa/crypto_se_driver.h',
102+
'include/psa/crypto_sizes.h',
103+
'include/psa/crypto_struct.h',
104+
'include/psa/crypto_types.h',
105+
'include/psa/crypto_values.h',
106+
subdir:'psa')
107+
6108
libmbedcrypto = library('mbedcrypto',
7109
'library/aes.c',
8110
'library/aesni.c',
@@ -143,3 +245,5 @@ mbedtls_dep = declare_dependency(
143245
include_directories: incl,
144246
)
145247

248+
pkg = import('pkgconfig')
249+
pkg.generate(libmbedtls,libraries:[libmbedtls, libmbedx509, libmbedcrypto])

0 commit comments

Comments
 (0)