diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 810f51c..27ed699 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,11 +1,10 @@ name: ocelot.social publish branded CI -# on: -# push: -# branches: -# - master -# Wolle -on: [push] # for testing while developing +on: + push: + branches: + - master + - wir-social # for testing while developing jobs: ############################################################################## @@ -42,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 @@ -82,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 @@ -124,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 @@ -166,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/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/deployment/kubernetes/values.template.yaml b/deployment/kubernetes/values.template.yaml index a525a3b..f8669d1 100644 --- a/deployment/kubernetes/values.template.yaml +++ b/deployment/kubernetes/values.template.yaml @@ -20,7 +20,7 @@ BACKEND: SMTP_PASSWORD: "devops@ocelot.social" SMTP_PORT: "465" SMTP_IGNORE_TLS: 'true' - SMTP_SECURE: 'false' + SMTP_SECURE: 'false' # true for 465, false for other ports # most likely you don't need to change this MIN_READY_SECONDS: "15" diff --git a/docker-compose.ocelotsocial-branded.yml b/docker-compose.ocelotsocial-branded.yml new file mode 100644 index 0000000..5ea530e --- /dev/null +++ b/docker-compose.ocelotsocial-branded.yml @@ -0,0 +1,80 @@ +# This docker-compose file is just here for testing +version: "3.4" + +services: + ######################################################## + # WEBAPP ############################################### + ######################################################## + webapp: + image: ocelotsocialnetwork/webapp-branded:latest + ports: + - 3000:3000 + networks: + - test-network + depends_on: + - backend + environment: + - HOST=0.0.0.0 + - GRAPHQL_URI=http://backend:4000 + - MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" + - WEBSOCKETS_URI=${WEBSOCKETS_URI} + - PUBLIC_REGISTRATION=true + ######################################################## + # BACKEND ############################################## + ######################################################## + backend: + image: ocelotsocialnetwork/backend-branded:latest + networks: + - test-network + depends_on: + - neo4j + ports: + - 4000:4000 + environment: + - NEO4J_URI=bolt://neo4j:7687 + - GRAPHQL_URI=http://backend:4000 + - CLIENT_URI=http://localhost:3000 + - JWT_SECRET=b/&&7b78BF&fv/Vd + - MAPBOX_TOKEN=pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g + - PRIVATE_KEY_PASSPHRASE=a7dsf78sadg87ad87sfagsadg78 + - EMAIL_SUPPORT=support@wir.social + - EMAIL_DEFAULT_SENDER=info@wir.social + - PUBLIC_REGISTRATION=true + - SMTP_USERNAME=${SMTP_USERNAME} + - SMTP_PASSWORD=${SMTP_PASSWORD} + - SMTP_HOST=mailserver + - SMTP_PORT=25 + - SMTP_IGNORE_TLS=true + ######################################################## + # NEO4J ################################################ + ######################################################## + neo4j: + image: ocelotsocialnetwork/neo4j-community-branded:latest + networks: + - test-network + environment: + - NEO4J_AUTH=none + - NEO4J_dbms_security_procedures_unrestricted=algo.*,apoc.* + - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes + ports: + - 7687:7687 + ######################################################## + # MAINTENANCE ########################################## + ######################################################## + maintenance: + image: ocelotsocialnetwork/maintenance-branded:latest + networks: + - test-network + ports: + - 5000:80 + ######################################################## + # MAILSERVER TO FAKE SMTP ############################## + ######################################################## + mailserver: + image: djfarrelly/maildev + ports: + - 1080:80 + networks: + - test-network +networks: + test-network: \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index b680fd9..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: @@ -62,4 +87,4 @@ services: networks: - test-network networks: - test-network: \ No newline at end of file + test-network: 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 aa51e1f..d76e5be 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "wir.social", "version": "1.0.3", - "ocelotDockerVersionTag": "1.0.3-82", + "ocelotDockerVersionTag": "1.0.3-97", "dockerOrganisation": "wirsocial", - "description": "wir.social ocelot.social Network", + "description": "wir.social Network driven by ocelot.social", "author": "ocelot.social Community", "license": "MIT", "private": false,