-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
48 lines (30 loc) · 1.33 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
# NOTE: Multi-stage Build
FROM alpine:3.9 as graalvm_download
ENV GRAALVM_VERSION=19.0.0
RUN apk add --no-cache curl
# Download GraalVM and Install
RUN curl -L https://github.com/oracle/graal/releases/download/vm-${GRAALVM_VERSION}/graalvm-ce-linux-amd64-${GRAALVM_VERSION}.tar.gz | tar zxf - && \
mv /graalvm-ce-$GRAALVM_VERSION /graalvm-ce
FROM node:10.15-alpine as piping_build
# Copy piping server to /app
COPY piping-server /app
# Build Piping Server
RUN cd /app && \
npm install && \
npm run build && \
npm prune --production
# (base image info from: https://masahito.hatenablog.com/entry/2018/06/24/223231)
FROM jeanblanchard/alpine-glibc:3.9
LABEL maintainer="Ryo Ota <nwtgck@gmail.com>"
ENV GRAALVM_PATH=/usr/local/graalvm-ce
ENV PATH=$PATH:$GRAALVM_PATH/jre/languages/js/bin
# Install tini
RUN apk add --no-cache tini
# Copy only essential GraalVM files
COPY --from=graalvm_download /graalvm-ce/jre/languages/js/bin/node $GRAALVM_PATH/jre/languages/js/bin/node
COPY --from=graalvm_download /graalvm-ce/jre/lib/amd64/libjsig.so $GRAALVM_PATH/jre/lib/amd64/libjsig.so
COPY --from=graalvm_download /graalvm-ce/jre/lib/polyglot/libpolyglot.so $GRAALVM_PATH/jre/lib/polyglot/libpolyglot.so
# Copy Piping Server
COPY --from=piping_build /app /app
# Run a server
ENTRYPOINT [ "tini", "--", "node", "/app/dist/src/index.js" ]