mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-12 15:25:57 +00:00
* feat(other): major improvement of deployment Motivation ---------- Kubernetes: * backend becomes a statefulset (exclusive volume mount) See: https://spacelift.io/blog/statefulset-vs-deployment * implement neo4j backup with job Docker: * consistent targets across all dockerfiles * remove redundant labels * remove unnecessary build args * remove obsolete networks * remove development dependencies for production Rebranding: * add image tags for local tagging and pulling * use Github's docker build workflows * use Github container registry * ONBUILD to simplify caller Dockerfiles * docker compose for branding Tooling: * same node --version as in dockerfile Docs: * missing step in README.md * refactor: remove submodules It's better to keep them all in a separate repository * improve kubernetes chart * better image tag defaults * split neo4j into its own chart (for re-use) * use application defaults where possible * optional resources for all pods * remove obsolete key/value pair from secrets * remove obsolete build argsand and add labels for neo4j enterprise * env vars for webapp * allow to define redirect domains Define a list of Domains that redirect to the domain of the project. The idea is to provide the ability to redirect eg. www.domain.tld to domain.tld * remove maintenance part regarding database * move backup job outside template folder * name the ingress * updated ingress * handle empty case of middlewares * try to default the ingress * use quote * restore todo-next-update * fix docu check * fix naming * try using prod:migrate * try using override config * copy src folder * try using base as image instead of build * fix test build * force build * comment for the problem * fix webapp tests (potentially) --------- Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
43 lines
1.6 KiB
Docker
43 lines
1.6 KiB
Docker
FROM node:20.12.1-alpine3.19 AS base
|
|
LABEL org.label-schema.name="ocelot.social:backend"
|
|
LABEL org.label-schema.description="Backend of the Social Network Software ocelot.social"
|
|
LABEL org.label-schema.usage="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/README.md"
|
|
LABEL org.label-schema.url="https://ocelot.social"
|
|
LABEL org.label-schema.vcs-url="https://github.com/Ocelot-Social-Community/Ocelot-Social/tree/master/backend"
|
|
LABEL org.label-schema.vendor="ocelot.social Community"
|
|
LABEL org.label-schema.schema-version="1.0"
|
|
LABEL maintainer="devops@ocelot.social"
|
|
ENV NODE_ENV="production"
|
|
ENV PORT="4000"
|
|
EXPOSE ${PORT}
|
|
RUN apk --no-cache add git python3 make g++ bash
|
|
RUN mkdir -p /app
|
|
WORKDIR /app
|
|
CMD ["/bin/bash", "-c", "yarn run start"]
|
|
|
|
FROM base AS development
|
|
CMD ["/bin/sh", "-c", "yarn install && yarn run dev"]
|
|
|
|
FROM base AS build
|
|
COPY . .
|
|
ONBUILD COPY ./branding/constants/ src/config/tmp
|
|
ONBUILD RUN tools/replace-constants.sh
|
|
ONBUILD COPY ./branding/email/ src/middleware/helpers/email/
|
|
ONBUILD RUN yarn install --production=false --frozen-lockfile --non-interactive
|
|
ONBUILD RUN yarn run build
|
|
ONBUILD RUN mkdir /build
|
|
ONBUILD RUN cp -r ./build /build
|
|
ONBUILD RUN cp -r ./public /build/build
|
|
ONBUILD RUN cp -r ./package.json yarn.lock /build
|
|
ONBUILD RUN cd /build && yarn install --production=true --frozen-lockfile --non-interactive
|
|
|
|
FROM build AS test
|
|
# required for the migrations
|
|
# ONBUILD RUN cp -r ./src /src
|
|
CMD ["/bin/bash", "-c", "yarn run dev"]
|
|
|
|
FROM build AS production_build
|
|
|
|
FROM base AS production
|
|
COPY --from=production_build /build .
|