Files
flood/Dockerfile
Jesse Chan 81eebe4506 Dockerfile: always use host platform for build stage
Compiled assets and JavaScript files can run on any platform. So
always use host platform for build to eliminate emulation overhead.

Note that BUILDPLATFORM is new and requires docker buildx. It falls
back to amd64.
2020-11-28 22:45:37 +08:00

54 lines
1.1 KiB
Docker

# WARNING:
# This Dockerfile uses contents of current folder which might contain
# secrets, uncommitted changes or other sensitive information. DO NOT
# publish the result image unless it was composed in a clean environment.
ARG BUILDPLATFORM=amd64
ARG NODE_IMAGE=node:alpine
FROM --platform=$BUILDPLATFORM ${NODE_IMAGE} as nodebuild
WORKDIR /usr/src/app/
# Copy project files
COPY . ./
# Install build dependencies
RUN apk --no-cache add \
python build-base
# Fetch dependencies from npm
RUN npm set unsafe-perm true
RUN npm install
# Build package
RUN cp config.cli.js config.js
RUN npm run build
RUN npm pack --ignore-scripts
# Now get the clean image
FROM ${NODE_IMAGE} as flood
# Copy package built
COPY --from=nodebuild /usr/src/app/*.tgz /tmp/
# Install package
RUN npm i -g /tmp/*.tgz --unsafe-perm
RUN rm /tmp/*.tgz
# Install runtime dependencies
RUN apk --no-cache add \
mediainfo
# Create "download" user
RUN adduser -h /home/download -s /sbin/nologin --disabled-password download
# Run as "download" user
USER download
# Expose port 3000
EXPOSE 3000
# Flood
ENTRYPOINT ["flood", "--host=0.0.0.0"]