summaryrefslogtreecommitdiff
path: root/Dockerfile
diff options
context:
space:
mode:
authorLibravatar f0x52 <f0x@cthu.lu>2022-06-09 12:51:19 +0200
committerLibravatar GitHub <noreply@github.com>2022-06-09 12:51:19 +0200
commitb43f9ceca9f7e02248f1d88245ede5267e8b72c8 (patch)
tree1d6b64603e74c45785bf44dde194315344843e1e /Dockerfile
parent[chore] gitignore shell.nix (#639) (diff)
downloadgotosocial-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--Dockerfile35
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" ]