diff --git a/Dockerfile b/Dockerfile index 7b7728a53..184be41cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,24 +1,7 @@ # syntax=docker/dockerfile:1.3 # Dockerfile reference: https://docs.docker.com/engine/reference/builder/ -# stage 1: generate up-to-date swagger.yaml to put in the final container -FROM --platform=${BUILDPLATFORM} golang:1.23-alpine AS swagger - -RUN \ - ### Installs goswagger for building swagger definitions inside this container - go install "github.com/go-swagger/go-swagger/cmd/swagger@c46c303aaa02" && \ - # Makes swagger executable - chmod +x /go/bin/swagger - -COPY go.mod /go/src/github.com/superseriousbusiness/gotosocial/go.mod -COPY go.sum /go/src/github.com/superseriousbusiness/gotosocial/go.sum -COPY cmd /go/src/github.com/superseriousbusiness/gotosocial/cmd -COPY internal /go/src/github.com/superseriousbusiness/gotosocial/internal - -WORKDIR /go/src/github.com/superseriousbusiness/gotosocial -RUN /go/bin/swagger generate spec -o /go/src/github.com/superseriousbusiness/gotosocial/swagger.yaml --scan-models - -# stage 2: generate the web/assets/dist bundles +# stage 1: generate the web/assets/dist bundles FROM --platform=${BUILDPLATFORM} node:18-alpine AS bundler COPY web web @@ -27,7 +10,7 @@ RUN yarn --cwd ./web/source install && \ yarn --cwd ./web/source build && \ rm -rf ./web/source -# stage 3: build the executor container +# stage 2: build the executor container FROM --platform=${TARGETPLATFORM} alpine:3.20 as executor # switch to non-root user:group for GtS @@ -50,7 +33,7 @@ COPY --chown=1000:1000 gotosocial /gotosocial/gotosocial # copy over the web directories with templates, assets etc COPY --chown=1000:1000 --from=bundler web /gotosocial/web -COPY --chown=1000:1000 --from=swagger /go/src/github.com/superseriousbusiness/gotosocial/swagger.yaml web/assets/swagger.yaml +COPY --chown=1000:1000 ./web/assets/swagger.yaml /gotosocial/web/assets/swagger.yaml VOLUME [ "/gotosocial/storage", "/gotosocial/.cache" ] ENTRYPOINT [ "/gotosocial/gotosocial", "server", "start" ]