remake in Golang

This commit is contained in:
2024-02-28 11:14:48 -08:00
parent cb03dd59ee
commit 84424fdae9
21 changed files with 734 additions and 1751 deletions

View File

@@ -1,32 +1,15 @@
# syntax=docker/dockerfile:1
# Comments are provided throughout this file to help you get started.
# If you need more help, visit the Dockerfile reference guide at
# https://docs.docker.com/engine/reference/builder/
ARG NODE_VERSION=16.17.0
FROM node:${NODE_VERSION}-alpine
# Use production node environment by default.
ENV NODE_ENV production
# Build golang
FROM golang:1.22.0 as builder
WORKDIR /usr/src/api
COPY ./api .
RUN go mod download
RUN go build -o /docker-api .
WORKDIR /usr/src/app
# Download dependencies as a separate step to take advantage of Docker's caching.
# Leverage a cache mount to /root/.npm to speed up subsequent builds.
COPY package-lock.json package.json ./
RUN --mount=type=cache,target=/root/.npm \
npm ci --omit=dev
FROM ubuntu:latest
# Run the application as a non-root user.
USER node
WORKDIR /usr/src/api
COPY --from=builder /docker-api /usr/src/api/docker-api
COPY server.js .
# Expose the port that the application listens on.
EXPOSE 4000
# Run the application.
CMD node server.js
CMD ["./docker-api"]