-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
61 lines (37 loc) · 1003 Bytes
/
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
ARG BASE_IMAGE=alpine:3.7.3
# Development
FROM ${BASE_IMAGE} as dev
MAINTAINER Andrew Widdersheim <[email protected]>
COPY requirements /requirements
# NOTE(awiddersheim): A simple run-parts alternative.
RUN cd requirements \
&& for i in $(ls *.sh); do \
test -f ${i} && test -x ${i} && echo "Running (${i})" && ./${i} \
; done
WORKDIR /build
STOPSIGNAL SIGKILL
CMD ["sleep", "infinity"]
# Build
FROM dev as build
ARG ANALYZER
ARG CC
ARG CXX
ARG CI
ARG CMAKE_OPTS
ARG MAKE_OPTS=-j4
COPY . /tcp-echo
WORKDIR /build
RUN cmake ${CMAKE_OPTS} /tcp-echo
RUN ${ANALYZER} make ${MAKE_OPTS}
# Test
FROM build as test
RUN adduser -D tcp-echo > /dev/null 2>&1 || useradd tcp-echo
USER tcp-echo
# Production
FROM ${BASE_IMAGE} as prod
RUN adduser -D tcp-echo > /dev/null 2>&1 || useradd tcp-echo
COPY --from=build /tcp-echo/LICENSE /build/tcp-echo /tcp-echo/
WORKDIR /tcp-echo
EXPOSE 8090
USER tcp-echo
CMD ["./tcp-echo", "--enable-log-timestamps", "--enable-nodelay"]