From bab552ae8692b82f62f8a7569e09e8d76302f52d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 7 Jun 2021 20:17:13 +0200 Subject: [PATCH] Overtake the tested changes from sender.fm --- .github/workflows/publish.yml | 16 +++---- branding/constants/links.js | 13 ++++-- branding/constants/metadata.js | 4 +- branding/locales/html/de/code-of-conduct.html | 5 +++ branding/locales/html/de/data-privacy.html | 5 +++ branding/locales/html/de/faq.html | 5 +++ branding/locales/html/de/imprint.html | 5 +++ .../locales/html/de/terms-and-conditions.html | 5 +++ branding/locales/html/en/code-of-conduct.html | 5 +++ branding/locales/html/en/data-privacy.html | 5 +++ branding/locales/html/en/faq.html | 5 +++ branding/locales/html/en/imprint.html | 5 +++ .../locales/html/en/terms-and-conditions.html | 5 +++ docker-compose.yml | 25 +++++++++++ docker/backend.Dockerfile | 40 +++++++++++++++-- docker/maintenance.Dockerfile | 34 ++++++++++++-- docker/neo4j.Dockerfile | 6 ++- docker/webapp.Dockerfile | 45 +++++++++++++++++-- package.json | 2 +- 19 files changed, 209 insertions(+), 26 deletions(-) create mode 100644 branding/locales/html/de/code-of-conduct.html create mode 100644 branding/locales/html/de/data-privacy.html create mode 100644 branding/locales/html/de/faq.html create mode 100644 branding/locales/html/de/imprint.html create mode 100644 branding/locales/html/de/terms-and-conditions.html create mode 100644 branding/locales/html/en/code-of-conduct.html create mode 100644 branding/locales/html/en/data-privacy.html create mode 100644 branding/locales/html/en/faq.html create mode 100644 branding/locales/html/en/imprint.html create mode 100644 branding/locales/html/en/terms-and-conditions.html diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0937a1e..b450000 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,7 +4,7 @@ on: push: branches: - master -# on: [push] # for testing while developing + - 14-new-deployment-with-base-and-code # for testing while developing jobs: ############################################################################## @@ -41,7 +41,7 @@ jobs: ########################################################################## - name: Neo4j | Build `community-branded` image run: | - docker build --target community-branded -t "${DOCKER_ORGANISATION}/neo4j-community-branded:latest" -t "${DOCKER_ORGANISATION}/neo4j-community-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/neo4j-community-branded:${BUILD_VERSION}" -f docker/neo4j.Dockerfile --build-arg APP_IMAGE=ocelotsocialnetwork/neo4j:${OCELOT_DOCKER_VERSION_TAG} . + docker build --target community-branded -t "${DOCKER_ORGANISATION}/neo4j-community-branded:latest" -t "${DOCKER_ORGANISATION}/neo4j-community-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/neo4j-community-branded:${BUILD_VERSION}" -f docker/neo4j.Dockerfile --build-arg "APP_IMAGE_TAG=${OCELOT_DOCKER_VERSION_TAG}" . docker save "${DOCKER_ORGANISATION}/neo4j-community-branded" > /tmp/neo4j-community-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 @@ -81,9 +81,9 @@ jobs: ########################################################################## # BUILD BACKEND DOCKER IMAGE (branded) ################################ ########################################################################## - - name: backend | Build `branded` image + - name: Backend | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/backend-branded:latest" -t "${DOCKER_ORGANISATION}/backend-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/backend-branded:${BUILD_VERSION}" -f docker/backend.Dockerfile --build-arg APP_IMAGE=ocelotsocialnetwork/backend:${OCELOT_DOCKER_VERSION_TAG} . + docker build --target branded -t "${DOCKER_ORGANISATION}/backend-branded:latest" -t "${DOCKER_ORGANISATION}/backend-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/backend-branded:${BUILD_VERSION}" -f docker/backend.Dockerfile --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . docker save "${DOCKER_ORGANISATION}/backend-branded" > /tmp/backend-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 @@ -123,9 +123,9 @@ jobs: ########################################################################## # BUILD WEBAPP DOCKER IMAGE (build) ###################################### ########################################################################## - - name: webapp | Build `branded` image + - name: Webapp | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/webapp-branded:latest" -t "${DOCKER_ORGANISATION}/webapp-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/webapp-branded:${BUILD_VERSION}" -f docker/webapp.Dockerfile --build-arg APP_IMAGE=ocelotsocialnetwork/webapp:${OCELOT_DOCKER_VERSION_TAG} . + docker build --target branded -t "${DOCKER_ORGANISATION}/webapp-branded:latest" -t "${DOCKER_ORGANISATION}/webapp-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/webapp-branded:${BUILD_VERSION}" -f docker/webapp.Dockerfile --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . docker save "${DOCKER_ORGANISATION}/webapp-branded" > /tmp/webapp-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 @@ -165,9 +165,9 @@ jobs: ########################################################################## # BUILD MAINTENANCE DOCKER IMAGE (build) ################################# ########################################################################## - - name: maintenance | Build `branded` image + - name: Maintenance | Build `branded` image run: | - docker build --target branded -t "${DOCKER_ORGANISATION}/maintenance-branded:latest" -t "${DOCKER_ORGANISATION}/maintenance-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/maintenance-branded:${BUILD_VERSION}" -f docker/maintenance.Dockerfile --build-arg APP_IMAGE=ocelotsocialnetwork/maintenance:${OCELOT_DOCKER_VERSION_TAG} . + docker build --target branded -t "${DOCKER_ORGANISATION}/maintenance-branded:latest" -t "${DOCKER_ORGANISATION}/maintenance-branded:${VERSION}" -t "${DOCKER_ORGANISATION}/maintenance-branded:${BUILD_VERSION}" -f docker/maintenance.Dockerfile --build-arg "APP_IMAGE_TAG_CODE=${OCELOT_DOCKER_VERSION_TAG}-code" --build-arg "APP_IMAGE_TAG_BASE=${OCELOT_DOCKER_VERSION_TAG}-base" . docker save "${DOCKER_ORGANISATION}/maintenance-branded" > /tmp/maintenance-branded.tar - name: Upload Artifact uses: actions/upload-artifact@v2 diff --git a/branding/constants/links.js b/branding/constants/links.js index cdccbae..6b945a5 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -1,8 +1,13 @@ // this file is duplicated in `backend/src/config/links.js` and `webapp/constants/links.js` and replaced on rebranding export default { ORGANIZATION: 'https://ocelot.social', - DONATE: 'https://ocelot-social.herokuapp.com/donations', - IMPRINT: 'https://ocelot-social.herokuapp.com/imprint', - DATA_PRIVACY: 'https://ocelot-social.herokuapp.com/imprint', - FAQ: 'https://ocelot-social.herokuapp.com/#kontakt', + SUPPORT: 'https://ocelot.social', + + // on null or empty strings internal imprint is used, see 'webapp/locales/html/' + DONATE: 'https://ocelot-social.herokuapp.com/donations', // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly + IMPRINT: 'https://ocelot-social.herokuapp.com/imprint', // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly + TERMS_AND_CONDITIONS: null, + CODE_OF_CONDUCT: null, + DATA_PRIVACY: null, + FAQ: 'https://ocelot.social', } diff --git a/branding/constants/metadata.js b/branding/constants/metadata.js index e5f32c7..3d09066 100644 --- a/branding/constants/metadata.js +++ b/branding/constants/metadata.js @@ -1,9 +1,9 @@ // this file is duplicated in `backend/src/config/metadata.js` and `webapp/constants/metadata.js` and replaced on rebranding export default { APPLICATION_NAME: 'ocelot.social', - APPLICATION_SHORT_NAME: 'ocelot', + APPLICATION_SHORT_NAME: 'ocelot.social', APPLICATION_DESCRIPTION: 'Ocelot Social Community', COOKIE_NAME: 'ocelot-social-token', ORGANIZATION_NAME: 'busFaktor e.V.', - ORGANIZATION_JURISDICTION: 'Somewhere', + ORGANIZATION_JURISDICTION: 'Deutschland', } diff --git a/branding/locales/html/de/code-of-conduct.html b/branding/locales/html/de/code-of-conduct.html new file mode 100644 index 0000000..028650a --- /dev/null +++ b/branding/locales/html/de/code-of-conduct.html @@ -0,0 +1,5 @@ + + +

Ich bin der Inhalt vom Verhaltenskodex

+
+

Neu gebrandet …

diff --git a/branding/locales/html/de/data-privacy.html b/branding/locales/html/de/data-privacy.html new file mode 100644 index 0000000..25047fb --- /dev/null +++ b/branding/locales/html/de/data-privacy.html @@ -0,0 +1,5 @@ + + +

Das hier wäre der Inhalt der Datenschutzbestimmungen

+
+

Neu gebrandet …

diff --git a/branding/locales/html/de/faq.html b/branding/locales/html/de/faq.html new file mode 100644 index 0000000..214d481 --- /dev/null +++ b/branding/locales/html/de/faq.html @@ -0,0 +1,5 @@ + + +

Hier stehen die FAQs

+
+

Neu gebrandet …

diff --git a/branding/locales/html/de/imprint.html b/branding/locales/html/de/imprint.html new file mode 100644 index 0000000..174f61a --- /dev/null +++ b/branding/locales/html/de/imprint.html @@ -0,0 +1,5 @@ + + +

Ich bin das Impressum

+
+

Neu gebrandet …

diff --git a/branding/locales/html/de/terms-and-conditions.html b/branding/locales/html/de/terms-and-conditions.html new file mode 100644 index 0000000..4e0aaeb --- /dev/null +++ b/branding/locales/html/de/terms-and-conditions.html @@ -0,0 +1,5 @@ + + +

Ich bin der Inhalt der Seite "Nutzungsbedingungen"

+
+

Neu gebrandet …

diff --git a/branding/locales/html/en/code-of-conduct.html b/branding/locales/html/en/code-of-conduct.html new file mode 100644 index 0000000..b0065de --- /dev/null +++ b/branding/locales/html/en/code-of-conduct.html @@ -0,0 +1,5 @@ + + +

I am the content of the code of conduct

+
+

Rebranded …

diff --git a/branding/locales/html/en/data-privacy.html b/branding/locales/html/en/data-privacy.html new file mode 100644 index 0000000..2be9cf5 --- /dev/null +++ b/branding/locales/html/en/data-privacy.html @@ -0,0 +1,5 @@ + + +

This would be our data privacy section

+
+

Rebranded …

diff --git a/branding/locales/html/en/faq.html b/branding/locales/html/en/faq.html new file mode 100644 index 0000000..f8f0897 --- /dev/null +++ b/branding/locales/html/en/faq.html @@ -0,0 +1,5 @@ + + +

Here are the FAQs

+
+

Rebranded …

diff --git a/branding/locales/html/en/imprint.html b/branding/locales/html/en/imprint.html new file mode 100644 index 0000000..ae192da --- /dev/null +++ b/branding/locales/html/en/imprint.html @@ -0,0 +1,5 @@ + + +

I am the imprint

+
+

Rebranded …

diff --git a/branding/locales/html/en/terms-and-conditions.html b/branding/locales/html/en/terms-and-conditions.html new file mode 100644 index 0000000..6ebc0be --- /dev/null +++ b/branding/locales/html/en/terms-and-conditions.html @@ -0,0 +1,5 @@ + + +

I am the content of the page "terms and conditions"

+
+

Rebranded …

diff --git a/docker-compose.yml b/docker-compose.yml index 3604d1a..4379459 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,9 @@ version: "3.4" services: + ######################################################## + # WEBAPP ############################################### + ######################################################## webapp: build: dockerfile: docker/webapp.Dockerfile @@ -19,6 +22,9 @@ services: - MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" - WEBSOCKETS_URI=${WEBSOCKETS_URI} - PUBLIC_REGISTRATION=true + ######################################################## + # BACKEND ############################################## + ######################################################## backend: build: dockerfile: docker/backend.Dockerfile @@ -45,6 +51,9 @@ services: - SMTP_HOST=mailserver - SMTP_PORT=25 - SMTP_IGNORE_TLS=true + ######################################################## + # NEO4J ################################################ + ######################################################## neo4j: image: ocelotsocialnetwork/neo4j:community networks: @@ -55,6 +64,22 @@ services: - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes ports: - 7687:7687 + ######################################################## + # MAINTENANCE ########################################## + ######################################################## + maintenance: + build: + # TODO: Separate from webapp, this must be independent + dockerfile: docker/maintenance.Dockerfile + target: branded + context: . + networks: + - test-network + ports: + - 5000:80 + ######################################################## + # MAILSERVER TO FAKE SMTP ############################## + ######################################################## mailserver: image: djfarrelly/maildev ports: diff --git a/docker/backend.Dockerfile b/docker/backend.Dockerfile index 8851242..91e57b0 100644 --- a/docker/backend.Dockerfile +++ b/docker/backend.Dockerfile @@ -1,10 +1,44 @@ +ARG APP_IMAGE=ocelotsocialnetwork/backend +ARG APP_IMAGE_TAG_BASE=latest-base +ARG APP_IMAGE_TAG_CODE=latest-code +ARG APP_IMAGE_BASE=${APP_IMAGE}:${APP_IMAGE_TAG_BASE} +ARG APP_IMAGE_CODE=${APP_IMAGE}:${APP_IMAGE_TAG_CODE} + ################################################################################## -# BRANDED ######################################################################## +# CODE (branded) ################################################################# ################################################################################## -ARG APP_IMAGE=ocelotsocialnetwork/backend:latest -FROM $APP_IMAGE as branded +FROM $APP_IMAGE_CODE as code # copy public constants into the Docker image to brand it COPY branding/constants/links.js src/config/ COPY branding/constants/logos.js src/config/ COPY branding/constants/metadata.js src/config/ + +################################################################################## +# BUILD ########################################################################## +################################################################################## +FROM code as build + +# yarn install +RUN yarn install --production=false --frozen-lockfile --non-interactive +# yarn build +RUN yarn run build + +################################################################################## +# BRANDED (Does contain only "binary"- and static-files to reduce image size) #### +################################################################################## +FROM $APP_IMAGE_BASE as branded + +# TODO - do all copying with one COPY command to have one layer +# Copy "binary"-files from build image +COPY --from=build ${DOCKER_WORKDIR}/dist ./dist +COPY --from=build ${DOCKER_WORKDIR}/node_modules ./node_modules +# Copy static files # Wolle comment overfluid here? +# TODO - externalize the uploads so we can copy the whole folder +COPY --from=build ${DOCKER_WORKDIR}/public/img/ ./public/img/ +COPY --from=build ${DOCKER_WORKDIR}/public/providers.json ./public/providers.json +# Copy package.json for script definitions (lock file should not be needed) +COPY --from=build ${DOCKER_WORKDIR}/package.json ./package.json + +# Run command +CMD /bin/sh -c "yarn run start" diff --git a/docker/maintenance.Dockerfile b/docker/maintenance.Dockerfile index 1da296d..eeda31f 100644 --- a/docker/maintenance.Dockerfile +++ b/docker/maintenance.Dockerfile @@ -1,9 +1,37 @@ +ARG APP_IMAGE=ocelotsocialnetwork/maintenance +ARG APP_IMAGE_TAG_BASE=latest-base +ARG APP_IMAGE_TAG_CODE=latest-code +ARG APP_IMAGE_BASE=${APP_IMAGE}:${APP_IMAGE_TAG_BASE} +ARG APP_IMAGE_CODE=${APP_IMAGE}:${APP_IMAGE_TAG_CODE} + ################################################################################## -# BRANDED ######################################################################## +# CODE (branded) ################################################################# ################################################################################## -ARG APP_IMAGE=ocelotsocialnetwork/maintenance:latest -FROM $APP_IMAGE as branded +FROM $APP_IMAGE_CODE as code # copy public constants into the Docker image to brand it COPY branding/static/ static/ COPY branding/constants/ constants/ +COPY branding/locales/ locales/ + +################################################################################## +# BUILD ########################################################################## +################################################################################## +FROM code as build + +# yarn install +## unnicely done in $APP_IMAGE_CODE at the moment, see main repo +# RUN yarn install --production=false --frozen-lockfile --non-interactive +# yarn generate +RUN yarn run generate + +################################################################################## +# BRANDED ### TODO # TODO # TODO # TODO # TODO # TODO # TODO # TODO # TODO #### +################################################################################## +# FROM $APP_IMAGE_BASE as branded +FROM nginx:alpine as branded + +COPY --from=build ./app/dist/ /usr/share/nginx/html/ +RUN rm /etc/nginx/conf.d/default.conf +COPY --from=code ./app/maintenance/nginx/custom.conf /etc/nginx/conf.d/ + diff --git a/docker/neo4j.Dockerfile b/docker/neo4j.Dockerfile index dff5209..980c45e 100644 --- a/docker/neo4j.Dockerfile +++ b/docker/neo4j.Dockerfile @@ -1,9 +1,11 @@ -ARG APP_IMAGE=ocelotsocialnetwork/neo4j:latest +ARG APP_IMAGE=ocelotsocialnetwork/neo4j +ARG APP_IMAGE_TAG=latest +ARG APP_IMAGE_COMMUNITY=${APP_IMAGE}:${APP_IMAGE_TAG} ################################################################################## # COMMUNITY ###################################################################### ################################################################################## -FROM $APP_IMAGE as community-branded +FROM $APP_IMAGE_COMMUNITY as community-branded ################################################################################## # ENTERPRISE ##################################################################### diff --git a/docker/webapp.Dockerfile b/docker/webapp.Dockerfile index 157072b..1d7ee67 100644 --- a/docker/webapp.Dockerfile +++ b/docker/webapp.Dockerfile @@ -1,9 +1,48 @@ +ARG APP_IMAGE=ocelotsocialnetwork/webapp +ARG APP_IMAGE_TAG_BASE=latest-base +ARG APP_IMAGE_TAG_CODE=latest-code +ARG APP_IMAGE_BASE=${APP_IMAGE}:${APP_IMAGE_TAG_BASE} +ARG APP_IMAGE_CODE=${APP_IMAGE}:${APP_IMAGE_TAG_CODE} + ################################################################################## -# BRANDED ######################################################################## +# CODE (branded) ################################################################# ################################################################################## -ARG APP_IMAGE=ocelotsocialnetwork/webapp:latest -FROM $APP_IMAGE as branded +FROM $APP_IMAGE_CODE as code # copy public constants into the Docker image to brand it COPY branding/static/ static/ COPY branding/constants/ constants/ +COPY branding/locales/ locales/ + +################################################################################## +# BUILD ########################################################################## +################################################################################## +FROM code as build + +# yarn install +RUN yarn install --production=false --frozen-lockfile --non-interactive +# yarn build +RUN yarn run build + +################################################################################## +# BRANDED (Does contain only "binary"- and static-files to reduce image size) #### +################################################################################## +FROM $APP_IMAGE_BASE as branded + +# TODO - do all copying with one COPY command to have one layer +# Copy "binary"-files from build image +COPY --from=build ${DOCKER_WORKDIR}/.nuxt ./.nuxt +COPY --from=build ${DOCKER_WORKDIR}/node_modules ./node_modules +COPY --from=build ${DOCKER_WORKDIR}/nuxt.config.js ./nuxt.config.js +# Copy static files +# TODO - this seems not be needed anymore for the new rebranding +# TODO - this should be one Folder containign all stuff needed to be copied +COPY --from=build ${DOCKER_WORKDIR}/config/ ./config/ +COPY --from=build ${DOCKER_WORKDIR}/constants ./constants +COPY --from=build ${DOCKER_WORKDIR}/static ./static +COPY --from=build ${DOCKER_WORKDIR}/locales ./locales +# Copy package.json for script definitions (lock file should not be needed) +COPY --from=build ${DOCKER_WORKDIR}/package.json ./package.json + +# Run command +CMD /bin/sh -c "yarn run start" diff --git a/package.json b/package.json index 1ad10ae..3b0724f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ocelot-social-branded", "version": "1.0.3", - "ocelotDockerVersionTag": "1.0.3-82", + "ocelotDockerVersionTag": "1.0.3-97", "dockerOrganisation": "ocelotsocialnetwork", "description": "ocelot.social Branded", "author": "ocelot.social Community",