-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
62 lines (45 loc) · 1.71 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
ARG NODE_VERSION=22
ARG BUSYBOX_VERSION=1.36.1
ARG ALPINE_VERSION=3.20
#################################################################
####################### esbuild #################################
#################################################################
FROM node:${NODE_VERSION}-alpine as esbuild
COPY . /esbuild
WORKDIR /esbuild
RUN npm install && node build.mjs
##################################################################
####################### httpd ####################################
##################################################################
FROM alpine:${ALPINE_VERSION} AS httpd
# Install all dependencies required for compiling busybox
RUN apk add gcc musl-dev make perl
# Download busybox sources
ARG BUSYBOX_VERSION
RUN wget https://busybox.net/downloads/busybox-${BUSYBOX_VERSION}.tar.bz2 \
&& tar xf busybox-${BUSYBOX_VERSION}.tar.bz2 \
&& mv /busybox-${BUSYBOX_VERSION} /busybox
WORKDIR /busybox
# Copy the busybox build config (limited to httpd)
COPY .busybox .config
# Compile
RUN make && ./make_single_applets.sh
# Create a non-root user to own the files and run our server
RUN adduser -D static
##################################################################
####################### main #####################################
##################################################################
FROM scratch
# Copy over the user
COPY --from=httpd /etc/passwd /etc/passwd
# Use our non-root user
USER static
WORKDIR /home/static
# Copy httpd files
COPY --from=httpd --chown=static /busybox/busybox_HTTPD httpd
# Copy esbuild files
COPY --from=esbuild --chown=static /esbuild/out .
# port httpd runs on
EXPOSE 3000
# Run busybox httpd
CMD ["/home/static/httpd", "-f", "-p", "3000"]