diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6c455c7..0fde053 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: ############################################################################## @@ -31,7 +31,7 @@ jobs: run: echo "OCELOT_DOCKER_VERSION_TAG=$(node -p -e "require('./package.json').ocelotDockerVersionTag")" >> $GITHUB_ENV - name: ENV - DOCKER_ORGANISATION run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - # this is oriented on the node docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" + # this is based on the node Docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" - name: ENV - BUILD_VERSION run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $GITHUB_ENV - name: ENV - BUILD_COMMIT @@ -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 @@ -73,7 +73,7 @@ jobs: run: echo "OCELOT_DOCKER_VERSION_TAG=$(node -p -e "require('./package.json').ocelotDockerVersionTag")" >> $GITHUB_ENV - name: ENV - DOCKER_ORGANISATION run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - # this is oriented on the node docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" + # this is based on the node Docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" - name: ENV - BUILD_VERSION run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $GITHUB_ENV - name: ENV - BUILD_COMMIT @@ -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 @@ -115,7 +115,7 @@ jobs: run: echo "OCELOT_DOCKER_VERSION_TAG=$(node -p -e "require('./package.json').ocelotDockerVersionTag")" >> $GITHUB_ENV - name: ENV - DOCKER_ORGANISATION run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - # this is oriented on the node docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" + # this is based on the node Docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" - name: ENV - BUILD_VERSION run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $GITHUB_ENV - name: ENV - BUILD_COMMIT @@ -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 @@ -157,7 +157,7 @@ jobs: run: echo "OCELOT_DOCKER_VERSION_TAG=$(node -p -e "require('./package.json').ocelotDockerVersionTag")" >> $GITHUB_ENV - name: ENV - DOCKER_ORGANISATION run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - # this is oriented on the node docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" + # this is based on the node Docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" - name: ENV - BUILD_VERSION run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $GITHUB_ENV - name: ENV - BUILD_COMMIT @@ -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 @@ -202,7 +202,7 @@ jobs: run: echo "OCELOT_DOCKER_VERSION_TAG=$(node -p -e "require('./package.json').ocelotDockerVersionTag")" >> $GITHUB_ENV - name: ENV - DOCKER_ORGANISATION run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - # this is oriented on the node docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" + # this is based on the node Docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" - name: ENV - BUILD_VERSION run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $GITHUB_ENV - name: ENV - BUILD_COMMIT @@ -282,7 +282,7 @@ jobs: run: echo "OCELOT_DOCKER_VERSION_TAG=$(node -p -e "require('./package.json').ocelotDockerVersionTag")" >> $GITHUB_ENV - name: ENV - DOCKER_ORGANISATION run: echo "DOCKER_ORGANISATION=$(node -p -e "require('./package.json').dockerOrganisation")" >> $GITHUB_ENV - # this is oriented on the node docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" + # this is based on the node Docker version tag "node:12.19.0-alpine3.10" and looks like "app-branded:1.0.2-3-ocelot.social1.0.2-79" - name: ENV - BUILD_VERSION run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}-ocelot.social${OCELOT_DOCKER_VERSION_TAG}" >> $GITHUB_ENV - name: ENV - BUILD_COMMIT diff --git a/README.md b/README.md index 0ebc886..8b68a1b 100644 --- a/README.md +++ b/README.md @@ -38,12 +38,12 @@ Afterwards you can [deploy](deployment/README.md) it on your server: ## Developer Chat -Join our friendly open-source community on [Discord](https://discordapp.com/invite/DFSjPaX) :heart_eyes_cat: +Join our friendly open-source community on [Discord](https://discord.gg/AJSX9DCSUA) :heart_eyes_cat: Just introduce yourself at `#introduce-yourself` and mention `@@Mentor` to get you onboard :neckbeard: Check out the [contribution guideline](https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/CONTRIBUTING.md), too! We give write permissions to every developer who asks for it. Just text us on -[Discord](https://discord.gg/6ub73U3). +[Discord](https://discord.gg/AJSX9DCSUA). ## Technology Stack diff --git a/branding/constants/links.js b/branding/constants/links.js index dfa5776..6b945a5 100644 --- a/branding/constants/links.js +++ b/branding/constants/links.js @@ -3,7 +3,7 @@ export default { ORGANIZATION: 'https://ocelot.social', SUPPORT: 'https://ocelot.social', - // on null or empty string internal imprint is used, see 'webapp/locales/html/' + // 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, 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 index 8212ecf..028650a 100644 --- a/branding/locales/html/de/code-of-conduct.html +++ b/branding/locales/html/de/code-of-conduct.html @@ -1,5 +1,5 @@
Ich bin der Inhalt vom Verhaltenskodex
- -Neu gebrandet … +Neu gebrandet …
diff --git a/branding/locales/html/de/data-privacy.html b/branding/locales/html/de/data-privacy.html index c09c72f..25047fb 100644 --- a/branding/locales/html/de/data-privacy.html +++ b/branding/locales/html/de/data-privacy.html @@ -1,5 +1,5 @@Das hier wäre der Inhalt der Datenschutzbestimmungen
- -Neu gebrandet … +Neu gebrandet …
diff --git a/branding/locales/html/de/faq.html b/branding/locales/html/de/faq.html index 457fbac..214d481 100644 --- a/branding/locales/html/de/faq.html +++ b/branding/locales/html/de/faq.html @@ -1,5 +1,5 @@Hier stehen die FAQs
- -Neu gebrandet … +Neu gebrandet …
diff --git a/branding/locales/html/de/imprint.html b/branding/locales/html/de/imprint.html index d9d0e23..174f61a 100644 --- a/branding/locales/html/de/imprint.html +++ b/branding/locales/html/de/imprint.html @@ -1,5 +1,5 @@Ich bin das Impressum
- -Neu gebrandet … +Neu gebrandet …
diff --git a/branding/locales/html/de/terms-and-conditions.html b/branding/locales/html/de/terms-and-conditions.html index 30e3be3..4e0aaeb 100644 --- a/branding/locales/html/de/terms-and-conditions.html +++ b/branding/locales/html/de/terms-and-conditions.html @@ -1,5 +1,5 @@Ich bin der Inhalt der Seite "Nutzungsbedingungen"
- -Neu gebrandet … +Neu gebrandet …
diff --git a/branding/locales/html/en/code-of-conduct.html b/branding/locales/html/en/code-of-conduct.html index 7f78e27..b0065de 100644 --- a/branding/locales/html/en/code-of-conduct.html +++ b/branding/locales/html/en/code-of-conduct.html @@ -1,5 +1,5 @@I am the content of the code of conduct
- -Rebranded … +Rebranded …
diff --git a/branding/locales/html/en/data-privacy.html b/branding/locales/html/en/data-privacy.html index 92b8918..2be9cf5 100644 --- a/branding/locales/html/en/data-privacy.html +++ b/branding/locales/html/en/data-privacy.html @@ -1,5 +1,5 @@This would be our data privacy section
- -Rebranded … +Rebranded …
diff --git a/branding/locales/html/en/faq.html b/branding/locales/html/en/faq.html index 63eed99..f8f0897 100644 --- a/branding/locales/html/en/faq.html +++ b/branding/locales/html/en/faq.html @@ -1,5 +1,5 @@Here are the FAQs
- -Rebranded … +Rebranded …
diff --git a/branding/locales/html/en/imprint.html b/branding/locales/html/en/imprint.html index 6f50585..ae192da 100644 --- a/branding/locales/html/en/imprint.html +++ b/branding/locales/html/en/imprint.html @@ -1,5 +1,5 @@I am the imprint
- -Rebranded … +Rebranded …
diff --git a/branding/locales/html/en/terms-and-conditions.html b/branding/locales/html/en/terms-and-conditions.html index 8a135e3..6ebc0be 100644 --- a/branding/locales/html/en/terms-and-conditions.html +++ b/branding/locales/html/en/terms-and-conditions.html @@ -1,5 +1,5 @@I am the content of the page "terms and conditions"
-
-Rebranded …
+
+
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 f045c95..eeda31f 100644 --- a/docker/maintenance.Dockerfile +++ b/docker/maintenance.Dockerfile @@ -1,10 +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 0f10432..1d7ee67 100644 --- a/docker/webapp.Dockerfile +++ b/docker/webapp.Dockerfile @@ -1,10 +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",