FROM docker.io/library/node:20-alpine AS build_node_modules # Copy Web UI COPY src/ /app/ WORKDIR /app RUN npm ci --production # Copy build result to a new image. # This saves a lot of disk space. FROM docker.io/library/node:20-alpine COPY --from=build_node_modules /app /app # Move node_modules one directory up, so during development # we don't have to mount it in a volume. # This results in much faster reloading! # # Also, some node_modules might be native, and # the architecture & OS of your development machine might differ # than what runs inside of docker. RUN mv /app/node_modules /node_modules # Install Linux packages RUN apk add -U --no-cache \ iptables \ wireguard-tools \ dumb-init # Expose Ports EXPOSE 51820/udp EXPOSE 51821/tcp # Set Environment ENV DEBUG=Server,WireGuard # Run Web UI WORKDIR /app CMD ["/usr/bin/dumb-init", "node", "server.js"]