databag/Dockerfile

46 lines
1.3 KiB
Docker
Raw Permalink Normal View History

FROM node:22-alpine AS node
WORKDIR /app
# Download the node dependencies first before adding the rest for caching
COPY ./net/web/package.json ./net/web/yarn.lock ./
RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn \
yarn --frozen-lockfile
COPY ./net/web/ ./
RUN --mount=type=cache,target=/root/.yarn YARN_CACHE_FOLDER=/root/.yarn \
yarn run build
FROM golang:alpine AS go
EXPOSE 7000
WORKDIR /app/databag
RUN apk add --no-cache build-base imagemagick sqlite ffmpeg curl
RUN mkdir -p /opt/databag
RUN mkdir -p /var/lib/databag
RUN mkdir -p /app/databag/net
COPY ./net/server /app/databag/net/server
COPY ./net/transform /opt/databag/transform
WORKDIR /app/databag/net/server
RUN --mount=type=cache,target=/go/pkg/mod \
if [ -n "${DATABAG_GOARCH}" ]; then GOARCH=${DATABAG_GOARCH}; fi; \
if [ -n "${DATABAG_GOOS}" ]; then GOOS=${DATABAG_GOOS}; fi; \
go mod download
ARG DATABAG_GOARCH
ARG DATABAG_GOOS
RUN --mount=type=cache,target=/go/pkg/mod \
if [ -n "${DATABAG_GOARCH}" ]; then GOARCH=${DATABAG_GOARCH}; fi; \
if [ -n "${DATABAG_GOOS}" ]; then GOOS=${DATABAG_GOOS}; fi; \
CGO_ENABLED=1 go build -o databag .
COPY --from=node /app/build /app/databag/net/web/build
ENV DEV=0
ENV ADMIN=password
ENTRYPOINT /app/databag/net/server/entrypoint.sh