goshort/Dockerfile

60 lines
1.2 KiB
Docker
Raw Normal View History

2023-08-30 10:54:46 -03:00
# Load nodego image
FROM maronato/nodego:1.0 as builder
2023-08-21 22:48:33 -03:00
2023-09-06 13:30:45 -03:00
RUN apk add --no-cache make
ARG VERSION=undefined
2023-08-21 22:48:33 -03:00
WORKDIR /go/src/app
# Set our build environment
ENV GOPATH=/go
ENV PATH=$GOPATH/bin:/usr/local/go/bin:$PATH
# This variable communicates to the service that it's running inside
# a docker container.
ENV ENV_DOCKER=true
# Copy dockerignore files
COPY .dockerignore ./
2024-03-26 20:19:29 -03:00
# Install go deps
2023-08-24 22:44:03 -03:00
COPY go.mod go.sum ./
2024-03-26 20:19:29 -03:00
RUN go mod download -x
2023-08-21 22:48:33 -03:00
# Install node deps
COPY frontend/package.json frontend/package-lock.json frontend/
2024-03-26 20:19:29 -03:00
RUN npm ci --prefix frontend
2023-08-21 22:48:33 -03:00
2023-09-06 13:30:45 -03:00
COPY Makefile ./
2023-08-21 22:48:33 -03:00
# Build the frontend
COPY frontend frontend
2024-03-23 15:56:02 -03:00
RUN VITE_API_URL=/api VITE_OIDC_URL=/odc npm run --prefix frontend build
2023-08-21 22:48:33 -03:00
2023-08-24 22:44:03 -03:00
# Build backend
COPY goshort.go ./
COPY cmd cmd
COPY internal internal
2023-08-30 22:30:42 -03:00
COPY docs docs
2023-08-24 22:44:03 -03:00
2023-08-21 22:48:33 -03:00
# Build the backend
2024-03-26 20:19:29 -03:00
RUN make backend VERSION=$VERSION
2023-08-21 22:48:33 -03:00
# Now create a new image with just the binary
FROM gcr.io/distroless/static-debian11:nonroot
2023-08-22 01:53:05 -03:00
WORKDIR /app
2023-08-21 22:48:33 -03:00
# Set our runtime environment
ENV ENV_DOCKER=true
2023-08-24 22:03:58 -03:00
ENV GOSHORT_PROD=true
2023-08-21 22:48:33 -03:00
COPY --from=builder /go/src/app/goshort /usr/local/bin/goshort
HEALTHCHECK CMD [ "goshort", "healthcheck" ]
2023-08-24 22:03:58 -03:00
EXPOSE 8080
2023-08-21 22:48:33 -03:00
ENTRYPOINT [ "goshort" ]
CMD [ "serve" ]