From 14643d6825ecea3a1a189e436832f3fd990837a5 Mon Sep 17 00:00:00 2001 From: pmacius Date: Tue, 17 Sep 2024 13:05:02 +0200 Subject: [PATCH 01/12] OPSEXP-2800 Add share component dockerfile --- Makefile | 8 + README.md | 2 +- docker-bake.hcl | 22 +- share/Dockerfile | 33 + share/README.md | 0 share/artifacts.json | 14 + share/distribution/README.md | 17 + share/distribution/share-config-custom.xml | 741 +++++++++++++++++++++ share/substituter.sh | 35 + test/helm/test-overrides.yaml | 5 +- 10 files changed, 874 insertions(+), 3 deletions(-) create mode 100644 share/Dockerfile create mode 100644 share/README.md create mode 100644 share/artifacts.json create mode 100644 share/distribution/README.md create mode 100644 share/distribution/share-config-custom.xml create mode 100644 share/substituter.sh diff --git a/Makefile b/Makefile index e8d02bb5..c4ebf111 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,10 @@ prepare_connectors: scripts/fetch-artifacts.sh setenv @echo "Fetching all artifacts for Connectors targets" @./scripts/fetch-artifacts.sh connector +prepare_share: scripts/fetch-artifacts.sh setenv + @echo "Fetching all artifacts for Share targets" + @./scripts/fetch-artifacts.sh share + prepare_all: scripts/fetch-artifacts.sh setenv @echo "Fetching all artifacts" @./scripts/fetch-artifacts.sh @@ -77,6 +81,10 @@ connectors: prepare_connectors @echo "Building Connectors images" docker buildx bake ${DOCKER_BAKE_ARGS} connectors +share: prepare_share + @echo "Building Share images" + docker buildx bake ${DOCKER_BAKE_ARGS} share + all: docker-bake.hcl prepare_all @echo "Building all images" docker buildx bake ${DOCKER_BAKE_ARGS} diff --git a/README.md b/README.md index c1c81b7d..d49afe4d 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Using this tool to build Alfresco images requires: require authentication * Some Unix tools: `jq`, `wget`, `make` -Configuring the authentication to Alfresco NExus server must be dopne using the +Configuring the authentication to Alfresco Nexus server must be done using the wget rc file `~/.wgetrc` or `~/.netrc`: ```sh diff --git a/docker-bake.hcl b/docker-bake.hcl index 056782b7..089dc78d 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -1,5 +1,5 @@ group "default" { - targets = ["content_service", "enterprise-search", "ats", "tengines", "connectors"] + targets = ["content_service", "enterprise-search", "ats", "tengines", "connectors", "share"] } group "content_service" { @@ -22,6 +22,10 @@ group "connectors" { targets = ["connector_msteams", "connector_ms365"] } +group "share" { + targets = ["share"] +} + variable "REGISTRY" { default = "localhost" } @@ -546,3 +550,19 @@ target "connector_ms365" { output = ["type=docker"] platforms = split(",", "${TARGETARCH}") } + +target "share" { + context = "./share" + dockerfile = "Dockerfile" + inherits = ["tomcat_base"] + contexts = { + tomcat_base = "target:tomcat_base" + } + labels = { + "org.opencontainers.image.title" = "${PRODUCT_LINE} Share Enterprise" + "org.opencontainers.image.description" = "Alfresco Share Enterprise" + } + tags = ["${REGISTRY}/${REGISTRY_NAMESPACE}alfresco-share:${TAG}"] + output = ["type=docker"] + platforms = split(",", "${TARGETARCH}") +} diff --git a/share/Dockerfile b/share/Dockerfile new file mode 100644 index 00000000..052dcfa4 --- /dev/null +++ b/share/Dockerfile @@ -0,0 +1,33 @@ +FROM tomcat_base + +USER root +EXPOSE 8000 + +RUN mkdir -p ${CATALINA_HOME}/shared/classes/alfresco/web-extension \ + ${CATALINA_HOME}/amps_share \ + ${CATALINA_HOME}/webapps/share/ \ + ${CATALINA_HOME}/alfresco-mmt/ \ + /licenses + +COPY substituter.sh ${CATALINA_HOME}/shared/classes/alfresco + +ADD distribution /tmp/ +ENV DISTDIR="/tmp/distribution" + +RUN yum install -y unzip xmlstarlet && \ + unzip /tmp/*.zip -d ${DISTDIR} &&\ + unzip ${DISTDIR}/alfresco*/web-server/webapps/share.war -d ${CATALINA_HOME}/webapps/share/ &&\ + cp ${DISTDIR}/alfresco*/bin/* ${CATALINA_HOME}/alfresco-mmt/ &&\ + cp -r ${DISTDIR}/alfresco*/amps ${CATALINA_HOME}/amps_share &&\ + cp ${DISTDIR}/alfresco*/web-extension-samples/custom-slingshot-application-context.xml.sample ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ + cp ${DISTDIR}/alfresco*/web-extension-samples/smartfolders-amp-actions-config.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ + cp /tmp/share-config-custom.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ + rm -rf ${DISTDIR} /tmp &&\ + sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" ${CATALINA_HOME}/conf/catalina.properties &&\ + chmod +x ${CATALINA_HOME}/shared/classes/alfresco/substituter.sh &&\ + yum clean all && rm -rf /var/cache/yum + +RUN java -jar ${CATALINA_HOME}/alfresco-mmt/alfresco-mmt*.jar install \ + ${CATALINA_HOME}/amps_share ${CATALINA_HOME}/webapps/share -directory -nobackup -force + +ENTRYPOINT ["/usr/local/tomcat/shared/classes/alfresco/substituter.sh", "catalina.sh run"] diff --git a/share/README.md b/share/README.md new file mode 100644 index 00000000..e69de29b diff --git a/share/artifacts.json b/share/artifacts.json new file mode 100644 index 00000000..a666d02f --- /dev/null +++ b/share/artifacts.json @@ -0,0 +1,14 @@ +{ + "artifacts": { + "acs23": [ + { + "name": "alfresco-content-services-share-distribution", + "version": "23.2.2", + "path": "share/distribution", + "classifier": ".zip", + "group": "org.alfresco", + "repository": "enterprise-releases" + } + ] + } +} diff --git a/share/distribution/README.md b/share/distribution/README.md new file mode 100644 index 00000000..9172a562 --- /dev/null +++ b/share/distribution/README.md @@ -0,0 +1,17 @@ +# Alfresco Content Services share distribution + +Place here the version of Alfresco Content Services share distribution you want to +use in your Docker image. +Distribution file must be a ZIP file with the expected structure of an Alfresco +Content Services share distribution. + +```tree +amps/ +bin/ +web-extension-samples/ +web-server/ +|_webapps/ +|_conf/ + |_Catalina/ + |_localhost/ +``` diff --git a/share/distribution/share-config-custom.xml b/share/distribution/share-config-custom.xml new file mode 100644 index 00000000..65fa6aa3 --- /dev/null +++ b/share/distribution/share-config-custom.xml @@ -0,0 +1,741 @@ + + + + + + + false + + + false + + + + + + + + + + production + + + + + manual + true + + + + + + + + + + + + + Alfresco-CSRFToken + + + + + + + + + + + {token} +
{token}
+ {token} +
+ + + + + + + + /proxy/alfresco/remoteadm/.* + + + It is not allowed to access this url from your browser + + + + + + + POST + /proxy/alfresco/api/publishing/channels/.+ + + + {referer} + + + {origin} + + + + + + + POST + + /page/caches/dependency/clear|/page/index|/page/surfBugStatus|/page/modules/deploy|/page/modules/module|/page/api/javascript/debugger|/page/console + + + + {referer} + + + {origin} + + + + + + + POST + + /page/dologin(\?.+)?|/page/site/[^/]+/start-workflow|/page/start-workflow|/page/context/[^/]+/start-workflow + + + + {referer} + + + {origin} + + + + + + + POST + /page/dologout(\?.+)? + + + {referer} + + + {origin} + + + {token} + {token} + + + + + + + + .+ + + + + + + {token} + {token} + + + + + + + GET + /page/.* + + .+ + .+ + + + + {token} + {token} + + + + + + + POST +
multipart/.+
+ + .+ + +
+ + {token} + {token} + + + {referer} + + + {origin} + +
+ + + + + POST|PUT|DELETE + + .+ + + + + {token} + {token} + + + {referer} + + + {origin} + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + false + + + 1000 + + + 7000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://REPO_HOST:REPO_PORT/alfresco + + + + + false + + + + application/vnd.openxmlformats-officedocument.wordprocessingml.document + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + application/vnd.ms-powerpoint + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + location.path.documents + + slingshot/doclib/treenode/site/{site}/{container}{path}?children={evaluateChildFoldersSite}&max={maximumFolderCountSite} + + + + + + + + alfresco://company/home + + + + false + + + 500 + + + + true + + + + + + + + secret + + ALFRESCO.ORG + + HTTP/repository.server.com@ALFRESCO.ORG + + ShareHTTP + + true + + + + + + + + + + alfresco-noauth + Alfresco - unauthenticated access + Access to Alfresco Repository WebScripts that do not require authentication + alfresco + http://REPO_HOST:REPO_PORT/alfresco/s + none + + + + alfresco + Alfresco - user access + Access to Alfresco Repository WebScripts that require user authentication + alfresco + http://REPO_HOST:REPO_PORT/alfresco/s + user + + + + alfresco-feed + Alfresco Feed + Alfresco Feed - supports basic HTTP authentication via the EndPointProxyServlet + http + http://REPO_HOST:REPO_PORT/alfresco/s + true + user + + + + alfresco-api + alfresco + Alfresco Public API - user access + Access to Alfresco Repository Public API that require user authentication. + This makes use of the authentication that is provided by parent 'alfresco' endpoint. + alfresco + http://REPO_HOST:REPO_PORT/alfresco/api + user + + + + + + + + 2 + 8 + true + + + false + + + + + + + + + + + +
diff --git a/share/substituter.sh b/share/substituter.sh new file mode 100644 index 00000000..92c3431b --- /dev/null +++ b/share/substituter.sh @@ -0,0 +1,35 @@ +#!/bin/sh +set -e + +if [[ $REPO_HOST == "" ]]; then + REPO_HOST=localhost +fi + +if [[ $REPO_PORT == "" ]]; then + REPO_PORT=8080 +fi + +if [[ $USE_SSL == "true" ]]; then + sed -ie 's_port="8080"_port="8080" scheme="https"_' "$CATALINA_HOME"/conf/server.xml +fi + +echo "Replace 'REPO_HOST' with '$REPO_HOST' and 'REPO_PORT' with '$REPO_PORT'" + +xmlstarlet ed --inplace \ +-u "//config[@evaluator='string-compare' and @condition='DocumentLibrary']//repository-url" -v "http://"$REPO_HOST:$REPO_PORT"/alfresco" \ +-u "//config[@evaluator='string-compare' and @condition='Remote']//remote//endpoint//endpoint-url" -v "http://"$REPO_HOST:$REPO_PORT"/alfresco/s" \ +"$CATALINA_HOME"/shared/classes/alfresco/web-extension/share-config-custom.xml + +echo "NEW -csrf.filter.referer is '$CSRF_FILTER_REFERER'" +echo "NEW -csrf.filter.origin is '$CSRF_FILTER_ORIGIN'" + +if [ "${CSRF_FILTER_REFERER}" != "" ] && [ "${CSRF_FILTER_ORIGIN}" != "" ]; then + # set CSRFPolicy to true and set both properties referer and origin + xmlstarlet ed --inplace \ + -u "//config[@evaluator='string-compare' and @condition='CSRFPolicy']/@replace" -v "true" \ + -u "//config[@evaluator='string-compare' and @condition='CSRFPolicy']//referer" -v "$CSRF_FILTER_REFERER" \ + -u "//config[@evaluator='string-compare' and @condition='CSRFPolicy']//origin" -v "$CSRF_FILTER_ORIGIN" \ + "$CATALINA_HOME"/shared/classes/alfresco/web-extension/share-config-custom.xml +fi + +bash -c "$@" diff --git a/test/helm/test-overrides.yaml b/test/helm/test-overrides.yaml index 0dfdaf06..3ef76115 100644 --- a/test/helm/test-overrides.yaml +++ b/test/helm/test-overrides.yaml @@ -3,7 +3,10 @@ alfresco-repository: image: repository: localhost/alfresco-content-repository tag: latest -#share: +share: + image: + repository: localhost/alfresco-share + tag: latest alfresco-search-enterprise: liveIndexing: content: From ddbeaac6adbcc39df98fa6402495897880d27a58 Mon Sep 17 00:00:00 2001 From: pmacius Date: Tue, 17 Sep 2024 14:30:26 +0200 Subject: [PATCH 02/12] fix slash --- docker-bake.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index 089dc78d..a5dde493 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -562,7 +562,7 @@ target "share" { "org.opencontainers.image.title" = "${PRODUCT_LINE} Share Enterprise" "org.opencontainers.image.description" = "Alfresco Share Enterprise" } - tags = ["${REGISTRY}/${REGISTRY_NAMESPACE}alfresco-share:${TAG}"] + tags = ["${REGISTRY}/${REGISTRY_NAMESPACE}/alfresco-share:${TAG}"] output = ["type=docker"] platforms = split(",", "${TARGETARCH}") } From a7102045ba6837008bcbfc6ba0aebe69cc4cd619 Mon Sep 17 00:00:00 2001 From: pmacius Date: Tue, 17 Sep 2024 15:08:20 +0200 Subject: [PATCH 03/12] add compose test --- test/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/docker-compose.yml b/test/docker-compose.yml index ab3dfc89..d0d9a8ef 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -85,7 +85,7 @@ services: volumes: - shared-file-store-volume:/tmp/Alfresco/sfs share: - image: quay.io/alfresco/alfresco-share:23.2.1 + image: ${REGISTRY}/${REGISTRY_NAMESPACE}/alfresco-share:${TAG} mem_limit: 1g environment: REPO_HOST: "alfresco" From 00dab9115cd7c3422f3f1858f26ea164d5eec37a Mon Sep 17 00:00:00 2001 From: pmacius Date: Tue, 17 Sep 2024 15:27:51 +0200 Subject: [PATCH 04/12] add missing amp for share --- repository/amps/README.md | 2 +- share/Dockerfile | 2 ++ share/amps/README.md | 0 share/artifacts.json | 8 ++++++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 share/amps/README.md diff --git a/repository/amps/README.md b/repository/amps/README.md index 8e3a2b0f..507b3292 100644 --- a/repository/amps/README.md +++ b/repository/amps/README.md @@ -17,7 +17,7 @@ way to build well structured AMPs. > SDK](https://docs.alfresco.com/content-services/latest/develop/oop-sdk/) to > build Docker images with your extensions. -By default the `scripts/fetch-amps.sh` script will fetch the following AMPs from the Alfresco Nexus repository: +By default the `scripts/fetch-artifacts.sh` script will fetch the following AMPs from the Alfresco Nexus repository: * alfresco-share-services * alfresco-aos-module diff --git a/share/Dockerfile b/share/Dockerfile index 052dcfa4..a279ca56 100644 --- a/share/Dockerfile +++ b/share/Dockerfile @@ -11,6 +11,7 @@ RUN mkdir -p ${CATALINA_HOME}/shared/classes/alfresco/web-extension \ COPY substituter.sh ${CATALINA_HOME}/shared/classes/alfresco +ADD amps /tmp/amps ADD distribution /tmp/ ENV DISTDIR="/tmp/distribution" @@ -19,6 +20,7 @@ RUN yum install -y unzip xmlstarlet && \ unzip ${DISTDIR}/alfresco*/web-server/webapps/share.war -d ${CATALINA_HOME}/webapps/share/ &&\ cp ${DISTDIR}/alfresco*/bin/* ${CATALINA_HOME}/alfresco-mmt/ &&\ cp -r ${DISTDIR}/alfresco*/amps ${CATALINA_HOME}/amps_share &&\ + cp /tmp/amps/*.amp ${CATALINA_HOME}/amps_share &&\ cp ${DISTDIR}/alfresco*/web-extension-samples/custom-slingshot-application-context.xml.sample ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ cp ${DISTDIR}/alfresco*/web-extension-samples/smartfolders-amp-actions-config.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ cp /tmp/share-config-custom.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ diff --git a/share/amps/README.md b/share/amps/README.md new file mode 100644 index 00000000..e69de29b diff --git a/share/artifacts.json b/share/artifacts.json index a666d02f..b0906f9b 100644 --- a/share/artifacts.json +++ b/share/artifacts.json @@ -8,6 +8,14 @@ "classifier": ".zip", "group": "org.alfresco", "repository": "enterprise-releases" + }, + { + "name": "alfresco-googledrive-share", + "version": "4.1.0", + "path": "share/amps", + "classifier": ".amp", + "group": "org.alfresco.integrations", + "repository": "releases" } ] } From a11a54b1228fde3b6bcb291e15695a8b4b02f01a Mon Sep 17 00:00:00 2001 From: pmacius Date: Tue, 17 Sep 2024 17:18:42 +0200 Subject: [PATCH 05/12] review comments --- docker-bake.hcl | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index a5dde493..b3e53f71 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -1,9 +1,9 @@ group "default" { - targets = ["content_service", "enterprise-search", "ats", "tengines", "connectors", "share"] + targets = ["content_service", "enterprise-search", "ats", "tengines", "connectors"] } group "content_service" { - targets = ["repository"] + targets = ["repository", "share"] } group "enterprise-search" { @@ -22,10 +22,6 @@ group "connectors" { targets = ["connector_msteams", "connector_ms365"] } -group "share" { - targets = ["share"] -} - variable "REGISTRY" { default = "localhost" } @@ -559,8 +555,8 @@ target "share" { tomcat_base = "target:tomcat_base" } labels = { - "org.opencontainers.image.title" = "${PRODUCT_LINE} Share Enterprise" - "org.opencontainers.image.description" = "Alfresco Share Enterprise" + "org.opencontainers.image.title" = "${PRODUCT_LINE} Share" + "org.opencontainers.image.description" = "Alfresco Share" } tags = ["${REGISTRY}/${REGISTRY_NAMESPACE}/alfresco-share:${TAG}"] output = ["type=docker"] From ba80f4d0820153250e0eec38ae35456fdd2f22a8 Mon Sep 17 00:00:00 2001 From: pmacius Date: Tue, 17 Sep 2024 17:55:09 +0200 Subject: [PATCH 06/12] use just entrypoint --- share/Dockerfile | 6 +++--- share/{substituter.sh => entrypoint.sh} | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename share/{substituter.sh => entrypoint.sh} (98%) diff --git a/share/Dockerfile b/share/Dockerfile index a279ca56..23348b23 100644 --- a/share/Dockerfile +++ b/share/Dockerfile @@ -9,7 +9,7 @@ RUN mkdir -p ${CATALINA_HOME}/shared/classes/alfresco/web-extension \ ${CATALINA_HOME}/alfresco-mmt/ \ /licenses -COPY substituter.sh ${CATALINA_HOME}/shared/classes/alfresco +COPY entrypoint.sh ${CATALINA_HOME}/shared/classes/alfresco ADD amps /tmp/amps ADD distribution /tmp/ @@ -26,10 +26,10 @@ RUN yum install -y unzip xmlstarlet && \ cp /tmp/share-config-custom.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ rm -rf ${DISTDIR} /tmp &&\ sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" ${CATALINA_HOME}/conf/catalina.properties &&\ - chmod +x ${CATALINA_HOME}/shared/classes/alfresco/substituter.sh &&\ + chmod +x ${CATALINA_HOME}/shared/classes/alfresco/entrypoint.sh &&\ yum clean all && rm -rf /var/cache/yum RUN java -jar ${CATALINA_HOME}/alfresco-mmt/alfresco-mmt*.jar install \ ${CATALINA_HOME}/amps_share ${CATALINA_HOME}/webapps/share -directory -nobackup -force -ENTRYPOINT ["/usr/local/tomcat/shared/classes/alfresco/substituter.sh", "catalina.sh run"] +ENTRYPOINT ["/usr/local/tomcat/shared/classes/alfresco/entrypoint.sh"] diff --git a/share/substituter.sh b/share/entrypoint.sh similarity index 98% rename from share/substituter.sh rename to share/entrypoint.sh index 92c3431b..c8732784 100644 --- a/share/substituter.sh +++ b/share/entrypoint.sh @@ -32,4 +32,4 @@ if [ "${CSRF_FILTER_REFERER}" != "" ] && [ "${CSRF_FILTER_ORIGIN}" != "" ]; the "$CATALINA_HOME"/shared/classes/alfresco/web-extension/share-config-custom.xml fi -bash -c "$@" +exec catalina.sh run From 048fe8c6013e55615c59c20a249160800a1a29b9 Mon Sep 17 00:00:00 2001 From: pmacius Date: Wed, 18 Sep 2024 09:21:01 +0200 Subject: [PATCH 07/12] add docs --- share/README.md | 62 ++++++++++++++++++++++++++++++++++++ share/amps/README.md | 24 ++++++++++++++ share/distribution/README.md | 1 + 3 files changed, 87 insertions(+) diff --git a/share/README.md b/share/README.md index e69de29b..a80547af 100644 --- a/share/README.md +++ b/share/README.md @@ -0,0 +1,62 @@ +# Alfresco share image + +## Description + +This Docker file is used to build an Alfresco share image. + +## Building the image + +Make sure all required artifacts are present in the build context `share/`. +You can put them manually in the `share/` folder (for example if that's a +custom module of yours), or use the script `./scripts/fetch-artifacts.sh` to +download them from Alfresco's Nexus. + +Then, you can build the image from the root of this git repository with the +following command: + +```bash +docker buildx bake share +``` + +## Running the image + +### Alfresco share configuration + +All preperties you would normally add in the alfresco-global.properties file can +be added in the `JAVA_OPTS` environment variable to the container. + +For example, to set the database URL, you can use the following environment +variable: + +```bash +docker run -e JAVA_OPTS="-Dalfresco.host=localhost" \ + alfresco-share:mytag +``` + +Example set of variables for docker-compose file: + +```yaml + +alfresco-connector-ms365: + image: localhost/alfresco-share:YOUR-TAG + environment: + JAVA_OPTS: "" + REPO_HOST: alfresco + REPO_PORT: 8080 + CSRF_FILTER_REFERER: + CSRF_FILTER_ORIGIN: + USE_SSL: false + +``` + +- `JAVA_OPTS` - A set of properties that are picked up by the JVM inside the container +- `REPO_HOST` - Share needs to know how to register itself with Alfresco. The default value is `localhost` +- `REPO_PORT` - Share needs to know how to register itself with Alfresco. The default value is `8080` +- `CSRF_FILTER_REFERER` - CSRF Referrer +- `CSRF_FILTER_ORIGIN` - CSRF Origin +- `USE_SSL` - Enables ssl use if set to `true`. The default value is `false` + + +> If the image is meant to be used with the Alfresco Content Services Helm +> chart, you can use other [higher level means of +> configuration](https://github.com/Alfresco/alfresco-helm-charts/blob/main/charts/alfresco-share/README.md). diff --git a/share/amps/README.md b/share/amps/README.md index e69de29b..3d487643 100644 --- a/share/amps/README.md +++ b/share/amps/README.md @@ -0,0 +1,24 @@ +# Alfresco share AMPs + +Place here your Alfresco module Packages (AMPs) to be installed in the Alfresco +share. + +AMP packages should have the `.amp` extension and stick to the Alfresco module +packaging format as described in the [Alfresco +documentation](https://docs.alfresco.com/content-services/latest/develop/extension-packaging/#alfresco-module-package-amp). + +The [in-process Alfresco +SDK](https://docs.alfresco.com/content-services/latest/develop/sdk/) provides a +way to build well structured AMPs. + +> Note that AMPs are not the recommanded way to extend Alfresco. You should +> prefer using the Alfresco SDK to build your extensions as JARs even better, +> use the [out-of-process Alfresco +> SDK](https://docs.alfresco.com/content-services/latest/develop/oop-sdk/) to +> build Docker images with your extensions. + +By default the `scripts/fetch-artifacts.sh` script will fetch the following AMPs from the Alfresco Nexus repository: + +* alfresco-googledrive-share + +You can replace those, remove them to keep only the ones you need or add more. diff --git a/share/distribution/README.md b/share/distribution/README.md index 9172a562..9d4de3fb 100644 --- a/share/distribution/README.md +++ b/share/distribution/README.md @@ -15,3 +15,4 @@ web-server/ |_Catalina/ |_localhost/ ``` +Do changes to `share-config-custom.xml` according to your needs. From a408ee660117db3723f621892c48282d61c8f812 Mon Sep 17 00:00:00 2001 From: pmacius Date: Wed, 18 Sep 2024 10:54:29 +0200 Subject: [PATCH 08/12] multistage --- docker-bake.hcl | 14 ++++++++++++++ share/Dockerfile | 27 +++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/docker-bake.hcl b/docker-bake.hcl index b3e53f71..41f5b300 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -547,6 +547,14 @@ target "connector_ms365" { platforms = split(",", "${TARGETARCH}") } +variable "ALFRESCO_SHARE_USER_NAME" { + default = "share" +} + +variable "ALFRESCO_SHARE_USER_ID" { + default = "33010" +} + target "share" { context = "./share" dockerfile = "Dockerfile" @@ -554,6 +562,12 @@ target "share" { contexts = { tomcat_base = "target:tomcat_base" } + args = { + ALFRESCO_SHARE_GROUP_NAME = "${ALFRESCO_GROUP_NAME}" + ALFRESCO_SHARE_GROUP_ID = "${ALFRESCO_GROUP_ID}" + ALFRESCO_SHARE_USER_NAME = "${ALFRESCO_SHARE_USER_NAME}" + ALFRESCO_SHARE_USER_ID = "${ALFRESCO_SHARE_USER_ID}" + } labels = { "org.opencontainers.image.title" = "${PRODUCT_LINE} Share" "org.opencontainers.image.description" = "Alfresco Share" diff --git a/share/Dockerfile b/share/Dockerfile index 23348b23..1afce591 100644 --- a/share/Dockerfile +++ b/share/Dockerfile @@ -1,4 +1,6 @@ -FROM tomcat_base +ARG DISTRIB_NAME +ARG DISTRIB_MAJOR +FROM tomcat_base as share_build USER root EXPOSE 8000 @@ -15,7 +17,7 @@ ADD amps /tmp/amps ADD distribution /tmp/ ENV DISTDIR="/tmp/distribution" -RUN yum install -y unzip xmlstarlet && \ +RUN yum install -y unzip && \ unzip /tmp/*.zip -d ${DISTDIR} &&\ unzip ${DISTDIR}/alfresco*/web-server/webapps/share.war -d ${CATALINA_HOME}/webapps/share/ &&\ cp ${DISTDIR}/alfresco*/bin/* ${CATALINA_HOME}/alfresco-mmt/ &&\ @@ -32,4 +34,25 @@ RUN yum install -y unzip xmlstarlet && \ RUN java -jar ${CATALINA_HOME}/alfresco-mmt/alfresco-mmt*.jar install \ ${CATALINA_HOME}/amps_share ${CATALINA_HOME}/webapps/share -directory -nobackup -force +FROM tomcat_base AS share-rhlike +ARG ALFRESCO_SHARE_USER_ID +ARG ALFRESCO_SHARE_GROUP_ID +ARG ALFRESCO_SHARE_GROUP_NAME +ARG ALFRESCO_SHARE_USER_NAME + +COPY --chown=:${ALFRESCO_SHARE_GROUP_ID} --from=share_build ${CATALINA_HOME} ${CATALINA_HOME} + +USER root +RUN groupadd -g ${ALFRESCO_SHARE_GROUP_ID} ${ALFRESCO_SHARE_GROUP_NAME} && \ + useradd -u ${ALFRESCO_SHARE_USER_ID} -g ${ALFRESCO_SHARE_GROUP_NAME} ${ALFRESCO_SHARE_USER_NAME} -G tomcat && \ + mkdir -m 750 -p ${CATALINA_HOME}/modules/platform && \ + chgrp -R ${ALFRESCO_SHARE_GROUP_ID} ${CATALINA_HOME}/modules && \ + yum install -y xmlstarlet && \ + yum clean all && rm -rf /var/cache/yum + +FROM share-rhlike AS share-rockylinux9 + +FROM share-${DISTRIB_NAME}${DISTRIB_MAJOR} +USER ${ALFRESCO_SHARE_USER_NAME} + ENTRYPOINT ["/usr/local/tomcat/shared/classes/alfresco/entrypoint.sh"] From f79c5bc0679049da2c41e68e19d9bf23d3145698 Mon Sep 17 00:00:00 2001 From: pmacius Date: Wed, 18 Sep 2024 14:16:48 +0200 Subject: [PATCH 09/12] review comments --- share/Dockerfile | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/share/Dockerfile b/share/Dockerfile index 1afce591..aab22b60 100644 --- a/share/Dockerfile +++ b/share/Dockerfile @@ -6,10 +6,7 @@ USER root EXPOSE 8000 RUN mkdir -p ${CATALINA_HOME}/shared/classes/alfresco/web-extension \ - ${CATALINA_HOME}/amps_share \ - ${CATALINA_HOME}/webapps/share/ \ - ${CATALINA_HOME}/alfresco-mmt/ \ - /licenses + ${CATALINA_HOME}/conf/Catalina/localhost COPY entrypoint.sh ${CATALINA_HOME}/shared/classes/alfresco @@ -20,19 +17,18 @@ ENV DISTDIR="/tmp/distribution" RUN yum install -y unzip && \ unzip /tmp/*.zip -d ${DISTDIR} &&\ unzip ${DISTDIR}/alfresco*/web-server/webapps/share.war -d ${CATALINA_HOME}/webapps/share/ &&\ - cp ${DISTDIR}/alfresco*/bin/* ${CATALINA_HOME}/alfresco-mmt/ &&\ - cp -r ${DISTDIR}/alfresco*/amps ${CATALINA_HOME}/amps_share &&\ - cp /tmp/amps/*.amp ${CATALINA_HOME}/amps_share &&\ + cp -r ${DISTDIR}/alfresco*/amps/ /tmp/amps/ &&\ cp ${DISTDIR}/alfresco*/web-extension-samples/custom-slingshot-application-context.xml.sample ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ cp ${DISTDIR}/alfresco*/web-extension-samples/smartfolders-amp-actions-config.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ cp /tmp/share-config-custom.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ - rm -rf ${DISTDIR} /tmp &&\ + cp ${DISTDIR}/alfresco*/web-server/conf/Catalina/localhost/share.xml ${CATALINA_HOME}/conf/Catalina/localhost &&\ + sed -i 's|../modules/share|modules/share|' ${CATALINA_HOME}/conf/Catalina/localhost/share.xml &&\ sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" ${CATALINA_HOME}/conf/catalina.properties &&\ chmod +x ${CATALINA_HOME}/shared/classes/alfresco/entrypoint.sh &&\ yum clean all && rm -rf /var/cache/yum -RUN java -jar ${CATALINA_HOME}/alfresco-mmt/alfresco-mmt*.jar install \ - ${CATALINA_HOME}/amps_share ${CATALINA_HOME}/webapps/share -directory -nobackup -force +RUN java -jar ${DISTDIR}/alfresco*/bin/alfresco-mmt.jar install \ + /tmp/amps/ ${CATALINA_HOME}/webapps/share -directory -nobackup -force FROM tomcat_base AS share-rhlike ARG ALFRESCO_SHARE_USER_ID @@ -40,12 +36,12 @@ ARG ALFRESCO_SHARE_GROUP_ID ARG ALFRESCO_SHARE_GROUP_NAME ARG ALFRESCO_SHARE_USER_NAME -COPY --chown=:${ALFRESCO_SHARE_GROUP_ID} --from=share_build ${CATALINA_HOME} ${CATALINA_HOME} +COPY --chown=${ALFRESCO_SHARE_USER_ID}:${ALFRESCO_SHARE_GROUP_ID} --from=share_build ${CATALINA_HOME} ${CATALINA_HOME} USER root RUN groupadd -g ${ALFRESCO_SHARE_GROUP_ID} ${ALFRESCO_SHARE_GROUP_NAME} && \ useradd -u ${ALFRESCO_SHARE_USER_ID} -g ${ALFRESCO_SHARE_GROUP_NAME} ${ALFRESCO_SHARE_USER_NAME} -G tomcat && \ - mkdir -m 750 -p ${CATALINA_HOME}/modules/platform && \ + mkdir -m 750 -p ${CATALINA_HOME}/modules/share && \ chgrp -R ${ALFRESCO_SHARE_GROUP_ID} ${CATALINA_HOME}/modules && \ yum install -y xmlstarlet && \ yum clean all && rm -rf /var/cache/yum From 76b21aa6e207eae89fbcc9a0df300b5d2635f2d8 Mon Sep 17 00:00:00 2001 From: pmacius Date: Mon, 23 Sep 2024 11:21:26 +0200 Subject: [PATCH 10/12] review --- share/Dockerfile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/share/Dockerfile b/share/Dockerfile index aab22b60..0d79a1d6 100644 --- a/share/Dockerfile +++ b/share/Dockerfile @@ -14,18 +14,18 @@ ADD amps /tmp/amps ADD distribution /tmp/ ENV DISTDIR="/tmp/distribution" -RUN yum install -y unzip && \ - unzip /tmp/*.zip -d ${DISTDIR} &&\ - unzip ${DISTDIR}/alfresco*/web-server/webapps/share.war -d ${CATALINA_HOME}/webapps/share/ &&\ - cp -r ${DISTDIR}/alfresco*/amps/ /tmp/amps/ &&\ - cp ${DISTDIR}/alfresco*/web-extension-samples/custom-slingshot-application-context.xml.sample ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ - cp ${DISTDIR}/alfresco*/web-extension-samples/smartfolders-amp-actions-config.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ - cp /tmp/share-config-custom.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension &&\ - cp ${DISTDIR}/alfresco*/web-server/conf/Catalina/localhost/share.xml ${CATALINA_HOME}/conf/Catalina/localhost &&\ - sed -i 's|../modules/share|modules/share|' ${CATALINA_HOME}/conf/Catalina/localhost/share.xml &&\ - sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" ${CATALINA_HOME}/conf/catalina.properties &&\ - chmod +x ${CATALINA_HOME}/shared/classes/alfresco/entrypoint.sh &&\ - yum clean all && rm -rf /var/cache/yum +RUN yum install -y unzip +RUN unzip /tmp/*.zip -d ${DISTDIR} +RUN unzip ${DISTDIR}/alfresco*/web-server/webapps/share.war -d ${CATALINA_HOME}/webapps/share/ +RUN cp -r ${DISTDIR}/alfresco*/amps/ /tmp/amps/ +RUN cp ${DISTDIR}/alfresco*/web-extension-samples/custom-slingshot-application-context.xml.sample ${CATALINA_HOME}/shared/classes/alfresco/web-extension +RUN cp ${DISTDIR}/alfresco*/web-extension-samples/smartfolders-amp-actions-config.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension +RUN cp /tmp/share-config-custom.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension +RUN cp ${DISTDIR}/alfresco*/web-server/conf/Catalina/localhost/share.xml ${CATALINA_HOME}/conf/Catalina/localhost +RUN sed -i 's|../modules/share|modules/share|' ${CATALINA_HOME}/conf/Catalina/localhost/share.xml +RUN sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" ${CATALINA_HOME}/conf/catalina.properties +RUN chmod +x ${CATALINA_HOME}/shared/classes/alfresco/entrypoint.sh +RUN yum clean all && rm -rf /var/cache/yum RUN java -jar ${DISTDIR}/alfresco*/bin/alfresco-mmt.jar install \ /tmp/amps/ ${CATALINA_HOME}/webapps/share -directory -nobackup -force From 239a98ea70f6ec8d261e3531e4661de93710fc28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Maciusiak?= <158472457+pmacius@users.noreply.github.com> Date: Mon, 23 Sep 2024 16:10:33 +0200 Subject: [PATCH 11/12] Update share/Dockerfile Co-authored-by: Giovanni Toraldo <71768+gionn@users.noreply.github.com> --- share/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/share/Dockerfile b/share/Dockerfile index 0d79a1d6..4fd4483d 100644 --- a/share/Dockerfile +++ b/share/Dockerfile @@ -25,7 +25,6 @@ RUN cp ${DISTDIR}/alfresco*/web-server/conf/Catalina/localhost/share.xml ${CATAL RUN sed -i 's|../modules/share|modules/share|' ${CATALINA_HOME}/conf/Catalina/localhost/share.xml RUN sed -i "s/shared.loader=/shared.loader=\${catalina.base}\/shared\/classes/" ${CATALINA_HOME}/conf/catalina.properties RUN chmod +x ${CATALINA_HOME}/shared/classes/alfresco/entrypoint.sh -RUN yum clean all && rm -rf /var/cache/yum RUN java -jar ${DISTDIR}/alfresco*/bin/alfresco-mmt.jar install \ /tmp/amps/ ${CATALINA_HOME}/webapps/share -directory -nobackup -force From c899f60ff4c8babac05c474837cd2c8215cb3c0f Mon Sep 17 00:00:00 2001 From: pmacius Date: Mon, 23 Sep 2024 17:12:47 +0200 Subject: [PATCH 12/12] remove files --- share/Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/share/Dockerfile b/share/Dockerfile index 4fd4483d..eef83ca0 100644 --- a/share/Dockerfile +++ b/share/Dockerfile @@ -18,8 +18,6 @@ RUN yum install -y unzip RUN unzip /tmp/*.zip -d ${DISTDIR} RUN unzip ${DISTDIR}/alfresco*/web-server/webapps/share.war -d ${CATALINA_HOME}/webapps/share/ RUN cp -r ${DISTDIR}/alfresco*/amps/ /tmp/amps/ -RUN cp ${DISTDIR}/alfresco*/web-extension-samples/custom-slingshot-application-context.xml.sample ${CATALINA_HOME}/shared/classes/alfresco/web-extension -RUN cp ${DISTDIR}/alfresco*/web-extension-samples/smartfolders-amp-actions-config.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension RUN cp /tmp/share-config-custom.xml ${CATALINA_HOME}/shared/classes/alfresco/web-extension RUN cp ${DISTDIR}/alfresco*/web-server/conf/Catalina/localhost/share.xml ${CATALINA_HOME}/conf/Catalina/localhost RUN sed -i 's|../modules/share|modules/share|' ${CATALINA_HOME}/conf/Catalina/localhost/share.xml