-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
127 lines (104 loc) · 3.01 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
# syntax=docker/dockerfile:1
#-------------------------------------------------------------------------------
# Dependencies:
#-------------------------------------------------------------------------------
FROM ubuntu:latest AS yimmo-deps
ARG OCI_IMAGE_SOURCE=none
LABEL org.opencontainers.image.source=$OCI_IMAGE_SOURCE
# Avoid interactive prompts for TZ:
ENV TZ=US/Eastern
ENV DEBIAN_FRONTEND=noninteractive
# Paths used at runtime:
ENV LD_LIBRARY_PATH=/usr/local/lib
ENV PYTHONPATH=/opt/src/libyimmo/wsgi/demo
RUN mkdir -p /opt/src/ \
&& mkdir -p /opt/build/bsat \
&& mkdir -p /opt/build/yimmo
RUN apt update
RUN apt-get -qq install -y \
python3
RUN apt-get -qq install -y \
git \
build-essential \
autotools-dev \
libtool \
autoconf \
automake \
pkg-config \
libev-dev \
libyaml-dev \
uuid-dev \
libssl-dev \
python3-dev \
python3-pip \
python3-flask
RUN cd /opt/src && git clone https://github.com/andrew-canaday/libbsat
RUN cd /opt/src/libbsat && ./autogen.sh
RUN cd /opt/build/bsat \
&& /opt/src/libbsat/configure \
--silent \
--enable-silent-rules \
&& make install
ADD . /opt/src/libyimmo
RUN cd /opt/src/libyimmo && ./autogen.sh
#-------------------------------------------------------------------------------
# Test base:
#-------------------------------------------------------------------------------
FROM yimmo-deps AS yimmo-test
ENV YIMMO_SERVER_IDLE_TIMEOUT=2.0
RUN cd /opt/build/yimmo \
&& /opt/src/libyimmo/configure \
--enable-examples \
--enable-wsgi \
CFLAGS="-DYMO_LOG_LEVEL_MAX=6 -DYMO_LOG_LEVEL_DEFAULT=3" \
YMO_WS_FRAME_MAX=0xffffffffffffffff \
&& make \
&& make check \
&& make install
#-------------------------------------------------------------------------------
# Test Images:
#-------------------------------------------------------------------------------
# HTTP:
FROM yimmo-test AS yimmo-test-http
ENTRYPOINT ["/usr/local/bin/yimmo-wsgi", "demo_app:app"]
# WS:
FROM yimmo-test AS yimmo-test-ws
ENTRYPOINT ["/opt/build/yimmo/ci/ws/yimmo-ws-echo"]
#-------------------------------------------------------------------------------
# WSGI:
#-------------------------------------------------------------------------------
FROM yimmo-deps AS yimmo-wsgi
ENV PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig
RUN cd /opt/build/yimmo \
&& /opt/src/libyimmo/configure \
CFLAGS="-Ofast -flto -DYMO_LOG_LEVEL_MAX=2 -DYMO_LOG_LEVEL_DEFAULT=1" \
LDFLAGS="-flto" \
YMO_ALLOC_ALLOW_WEAKREF=0 \
YMO_ALLOC_ALLOW_WEAK=0 \
YMO_ALLOC_ALLOW_ALIAS=0 \
YMO_HDR_HASH_ALLOW_WEAK=0 \
YMO_HTTP_RECV_BUF_SIZE=4096 \
YMO_HTTP_MAX_BODY=0x1000000 \
--silent \
--enable-wsgi \
--enable-silent-rules \
&& make \
&& make check \
&& make install
RUN rm -r \
/opt/src/libyimmo \
/opt/src/libbsat \
/opt/build/bsat \
/opt/build/yimmo
RUN apt-get -qq remove \
git \
build-essential \
autotools-dev \
libtool \
autoconf \
automake \
pkg-config \
python3-dev \
python3-pip \
&& apt-get clean
ENTRYPOINT ["/usr/local/bin/yimmo-wsgi"]