diff options
| author | 2022-06-09 12:51:19 +0200 | |
|---|---|---|
| committer | 2022-06-09 12:51:19 +0200 | |
| commit | b43f9ceca9f7e02248f1d88245ede5267e8b72c8 (patch) | |
| tree | 1d6b64603e74c45785bf44dde194315344843e1e /Dockerfile | |
| parent | [chore] gitignore shell.nix (#639) (diff) | |
| download | gotosocial-b43f9ceca9f7e02248f1d88245ede5267e8b72c8.tar.xz | |
[frontend] Restructure Frontend Sources (#634)
* 🐸restructure frontend stuff, include admin and future user panel in main repo, properly deduplicate bundles for css+js across uses
* rename bundled to dist, caught by gitignore
* re-include status.css for profile template
* default to localhost
* serve frontend panels
* add todo message for abstraction
* refactor oauth registration flow
* oauth restructure
* update footer template
* change panel routes
* remove superfluous css imports
* write bundle to disk from test server, use forked budo-express
* wrap all page content in container
for robustness with addons etc injection other elements in body
* update documentation, goreleaser, Dockerfile
* update template meta tags
* add AGPL-3.0+ license header everywhere
* only attach update listener on EventEmitter
* cleaner config for various frontend bundles
* fix bundler script paths
* Merge commit 'd191931932b9293ce1be44ed08a1e69b9fcc1e25'
* fix up dockerfile, goreleaser
* go mod tidy
* add uglifyify
* move status hide/show js to frontend bundle
* fix stylesheet color( func regressions
* update contributing docs for new build path
* update goreleaser + docker building
* resolve dependency paths properly
* update package name
* use api errorhandler
Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
Diffstat (limited to 'Dockerfile')
| -rw-r--r-- | Dockerfile | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/Dockerfile b/Dockerfile index a4beea7ec..5da7c246f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,31 @@ # syntax=docker/dockerfile:1.3 +# stage 1: generate up-to-date swagger.yaml to put in the final container +FROM --platform=${BUILDPLATFORM} quay.io/goswagger/swagger:v0.29.0 AS swagger -# bundle the admin webapp -FROM --platform=${BUILDPLATFORM} node:17.6.0-alpine3.15 AS admin_builder -RUN apk update && apk upgrade --no-cache -RUN apk add git +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 swagger generate spec -o /go/src/github.com/superseriousbusiness/gotosocial/swagger.yaml --scan-models -RUN git clone https://github.com/superseriousbusiness/gotosocial-admin -WORKDIR /gotosocial-admin +# stage 2: generate the web/assets/dist bundles +FROM --platform=${BUILDPLATFORM} node:16.15.1-alpine3.15 AS bundler -RUN npm install -RUN node index.js +COPY web web +RUN yarn install --cwd web/source && \ + BUDO_BUILD=1 node web/source && \ + rm -r web/source -FROM --platform=${TARGETPLATFORM} alpine:3.15.0 AS executor +# stage 3: build the executor container +FROM --platform=${TARGETPLATFORM} alpine:3.15.4 as executor -# copy over the binary from the first stage +# copy the dist binary created by goreleaser or build.sh COPY --chown=1000:1000 gotosocial /gotosocial/gotosocial -# copy over the web directory with templates etc -COPY --chown=1000:1000 web /gotosocial/web - -# copy over the admin directory -COPY --chown=1000:1000 --from=admin_builder /gotosocial-admin/public /gotosocial/web/assets/admin +# 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 WORKDIR "/gotosocial" ENTRYPOINT [ "/gotosocial/gotosocial", "server", "start" ] |
