Skip to content

Commit

Permalink
OPSEXP-2732 Add search enterprise metadata image Dockerfile (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
pmacius authored Jul 17, 2024
1 parent 7d2fadc commit d7b7afe
Show file tree
Hide file tree
Showing 9 changed files with 1,935 additions and 3 deletions.
98 changes: 98 additions & 0 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Build, Run and Test Docker Image

on: [push]

jobs:
build-run-test:
runs-on: ubuntu-latest
strategy:
matrix:
images:
- artifact: alfresco-elasticsearch-live-indexing-metadata
version: 4.0.1
name: alfresco-enterprise-search-metadata
path: search/enterprise/metadata
classifier: -app.jar
group: org.alfresco

steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # 4.1.7

- name: Set up QEMU
uses: docker/setup-qemu-action@5927c834f5b4fdf503fca6f4c7eccda82949e1ee # 3.1.0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@2ad185228a349d19414702819e06df9fa4314287 # 3.4.0

- name: Login to Docker Hub
uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # 3.2.0
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}

- name: Setup .netrc
run: |
echo "machine nexus.alfresco.com" >> ~/.netrc
echo "login ${{ secrets.NEXUS_USERNAME }}" >> ~/.netrc
echo "password ${{ secrets.NEXUS_PASSWORD }}" >> ~/.netrc
- name: Fetch artifacts from nexus
run: ${{ github.workspace }}/scripts/fetch-artifact.sh ${{ matrix.images.artifact }} ${{ matrix.images.version }} ${{ matrix.images.classifier }} ${{ matrix.images.group }} ${{ matrix.images.path }}
working-directory: ${{ github.workspace }}

- name: Build Docker image
uses: docker/build-push-action@a254f8ca60a858f3136a2f1f23a60969f2c402dd # 6.4.0
with:
context: .
tags: ${{ matrix.images.name }}:test
push: false
load: true
file: ${{ github.workspace }}/${{ matrix.images.path }}/Dockerfile

- name: Run Docker image
run: docker run -d -p 8080:8080 ${{ matrix.images.name }}:test

- name: Wait for container
run: sleep 30s

- uses: Alfresco/alfresco-build-tools/.github/actions/[email protected]

- name: Save Docker image
run: docker save ${{ matrix.images.name }}:test -o /tmp/${{ matrix.images.name }}.tar

- name: Upload image as a tar for next job
uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # 4.3.4
with:
name: images
path: /tmp/${{ matrix.images.name }}.tar

compose:
name: docker-compose
needs: build-run-test
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@2ad185228a349d19414702819e06df9fa4314287 # 3.4.0

- name: Download artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # 4.1.8
with:
name: images
path: /tmp

- name: Load Docker images
run: |
ls -1 /tmp/*.tar | xargs --no-run-if-empty -L 1 docker load -i
docker image ls -a
- name: Verify docker-compose
uses: Alfresco/alfresco-build-tools/.github/actions/dbp-charts/[email protected]
timeout-minutes: 10
with:
compose_pull: false
compose_file_path: docker-compose/docker-compose.yml
quay_username: ${{ secrets.QUAY_USERNAME }}
quay_password: ${{ secrets.QUAY_PASSWORD }}

- uses: Alfresco/alfresco-build-tools/.github/actions/[email protected]
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.zip
dist
*.jar
17 changes: 17 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
repos:
# General hooks section
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-yaml
args: [--allow-multiple-documents]
- id: check-merge-conflict
- id: fix-byte-order-marker
- id: mixed-line-ending
args: ["--fix=lf"]
- id: end-of-file-fixer
- repo: https://github.com/sirosen/check-jsonschema
rev: 0.14.3
hooks:
- id: check-github-workflows
193 changes: 193 additions & 0 deletions docker-compose/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
version: "2"
services:
alfresco:
image: quay.io/alfresco/alfresco-content-repository:23.2.1
mem_limit: 1900m
environment:
JAVA_TOOL_OPTIONS: >-
-Dencryption.keystore.type=JCEKS
-Dencryption.cipherAlgorithm=DESede/CBC/PKCS5Padding
-Dencryption.keyAlgorithm=DESede
-Dencryption.keystore.location=/usr/local/tomcat/shared/classes/alfresco/extension/keystore/keystore
-Dmetadata-keystore.password=mp6yc0UD9e
-Dmetadata-keystore.aliases=metadata
-Dmetadata-keystore.metadata.password=oKIWzVdEdA
-Dmetadata-keystore.metadata.algorithm=DESede
JAVA_OPTS: >-
-Ddb.driver=org.postgresql.Driver
-Ddb.username=alfresco
-Ddb.password=alfresco
-Ddb.url=jdbc:postgresql://postgres:5432/alfresco
-Dindex.subsystem.name=elasticsearch
-Delasticsearch.createIndexIfNotExists=true
-Delasticsearch.host=elasticsearch
-Delasticsearch.port=9200
-Dshare.host=127.0.0.1
-Dshare.port=8080
-Dalfresco.host=localhost
-Dalfresco.port=8080
-Dcsrf.filter.enabled=false
-Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos
-Dmessaging.broker.url="failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true"
-Ddeployment.method=DOCKER_COMPOSE
-Dtransform.service.enabled=true
-Dtransform.service.url=http://transform-router:8095
-Dsfs.url=http://shared-file-store:8099/
-DlocalTransform.core-aio.url=http://transform-core-aio:8090/
-Ddsync.service.uris=http://localhost:9090/alfresco
-XX:MinRAMPercentage=50
-XX:MaxRAMPercentage=80
healthcheck:
test:
- CMD
- curl
- -f
- http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/probes/-ready-
interval: 30s
timeout: 3s
retries: 3
start_period: 1m
transform-router:
mem_limit: 512m
image: quay.io/alfresco/alfresco-transform-router:4.1.2
environment:
JAVA_OPTS: >-
-XX:MinRAMPercentage=50
-XX:MaxRAMPercentage=80
ACTIVEMQ_URL: nio://activemq:61616
CORE_AIO_URL: http://transform-core-aio:8090
FILE_STORE_URL: >-
http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file
ports:
- "8095:8095"
depends_on:
- activemq
transform-core-aio:
image: alfresco/alfresco-transform-core-aio:5.1.2
mem_limit: 1536m
environment:
JAVA_OPTS: >-
-XX:MinRAMPercentage=50
-XX:MaxRAMPercentage=80
ACTIVEMQ_URL: nio://activemq:61616
FILE_STORE_URL: >-
http://shared-file-store:8099/alfresco/api/-default-/private/sfs/versions/1/file
ports:
- "8090:8090"
depends_on:
- activemq
shared-file-store:
image: quay.io/alfresco/alfresco-shared-file-store:4.1.2
mem_limit: 512m
environment:
JAVA_OPTS: >-
-XX:MinRAMPercentage=50
-XX:MaxRAMPercentage=80
scheduler.content.age.millis: 86400000
scheduler.cleanup.interval: 86400000
ports:
- "8099:8099"
volumes:
- shared-file-store-volume:/tmp/Alfresco/sfs
share:
image: quay.io/alfresco/alfresco-share:23.2.1
mem_limit: 1g
environment:
REPO_HOST: "alfresco"
REPO_PORT: "8080"
JAVA_OPTS: >-
-XX:MinRAMPercentage=50
-XX:MaxRAMPercentage=80
-Dalfresco.host=localhost
-Dalfresco.port=8080
-Dalfresco.context=alfresco
-Dalfresco.protocol=http
postgres:
image: postgres:14.4
mem_limit: 512m
environment:
- POSTGRES_PASSWORD=alfresco
- POSTGRES_USER=alfresco
- POSTGRES_DB=alfresco
command: postgres -c max_connections=300 -c log_min_messages=LOG
ports:
- "5432:5432"
elasticsearch:
image: elasticsearch:7.10.1
environment:
- xpack.security.enabled=false
- discovery.type=single-node
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add:
- IPC_LOCK
ports:
- 9200:9200
- 9300:9300
activemq:
image: alfresco/alfresco-activemq:5.18-jre17-rockylinux8
mem_limit: 1g
ports:
- "8161:8161" # Web Console
- "5672:5672" # AMQP
- "61616:61616" # OpenWire
- "61613:61613" # STOMP
digital-workspace:
image: quay.io/alfresco/alfresco-digital-workspace:4.4.1
mem_limit: 128m
environment:
APP_CONFIG_PROVIDER: "ECM"
APP_CONFIG_AUTH_TYPE: "BASIC"
BASE_PATH: ./
APP_CONFIG_PLUGIN_PROCESS_SERVICE: "false"
APP_CONFIG_PLUGIN_MICROSOFT_ONLINE: "false"
APP_BASE_SHARE_URL: "http://localhost:8080/workspace/#/preview/s"
control-center:
image: quay.io/alfresco/alfresco-control-center:8.4.1
mem_limit: 128m
environment:
APP_CONFIG_PROVIDER: "ECM"
APP_CONFIG_AUTH_TYPE: "BASIC"
BASE_PATH: ./
proxy:
image: alfresco/alfresco-acs-nginx:3.4.2
mem_limit: 128m
ports:
- "8080:8080"
depends_on:
- digital-workspace
- alfresco
- share
- control-center
sync-service:
image: quay.io/alfresco/service-sync:4.0.1
mem_limit: 1g
environment:
JAVA_OPTS: >-
-Dsql.db.driver=org.postgresql.Driver
-Dsql.db.url=jdbc:postgresql://postgres:5432/alfresco
-Dsql.db.username=alfresco
-Dsql.db.password=alfresco
-Dmessaging.broker.host=activemq
-Drepo.hostname=alfresco
-Drepo.port=8080
-Ddw.server.applicationConnectors[0].type=http
-XX:MinRAMPercentage=50
-XX:MaxRAMPercentage=80
ports:
- "9090:9090"
live-indexing-metadata:
image: alfresco-enterprise-search-metadata:test
environment:
SPRING_ELASTICSEARCH_REST_URIS: http://elastic:9200
SPRING_ACTIVEMQ_BROKERURL: nio://activemq:61616
volumes:
shared-file-store-volume:
driver_opts:
type: tmpfs
device: tmpfs
20 changes: 17 additions & 3 deletions scripts/fetch-artifact.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@ DEFAULT_ARTIFACT_NAME=alfresco-content-services-distribution
ARTIFACT_VERSION=$2
DEFAULT_ARTIFACT_VERSION=23.2.1

GROUP_ID=$3
EXTENSION=$3
DEFAULT_EXTENSION=.zip

GROUP_ID=$4
DEFAULT_GROUP_ID=org.alfresco

PATH_FOR_ARTIFACT=$5
DEFAULT_PATH_FOR_ARTIFACT=./

if [ -z "$ARTIFACT_NAME" ]; then
ARTIFACT_NAME=$DEFAULT_ARTIFACT_NAME
fi
Expand All @@ -18,13 +24,21 @@ if [ -z "$ARTIFACT_VERSION" ]; then
ARTIFACT_VERSION=$DEFAULT_ARTIFACT_VERSION
fi

if [ -z "$EXTENSION" ]; then
EXTENSION=$DEFAULT_EXTENSION
fi

if [ -z "$GROUP_ID" ]; then
GROUP_ID=$DEFAULT_GROUP_ID
fi

if [ -z "$PATH_FOR_ARTIFACT" ]; then
PATH_FOR_ARTIFACT=$DEFAULT_PATH_FOR_ARTIFACT
fi

GROUP_ID_AS_PATH=$(echo "$GROUP_ID" | tr . /)


echo "Downloading $GROUP_ID:$ARTIFACT_NAME $ARTIFACT_VERSION from Nexus"
wget --user "$NEXUS_USERNAME:$NEXUS_PASSWORD" \
"https://nexus.alfresco.com/nexus/service/local/repositories/enterprise-releases/content/$GROUP_ID_AS_PATH/$ARTIFACT_NAME/${ARTIFACT_VERSION}/$ARTIFACT_NAME-${ARTIFACT_VERSION}.zip"
wget "https://nexus.alfresco.com/nexus/service/local/repositories/enterprise-releases/content/$GROUP_ID_AS_PATH/$ARTIFACT_NAME/${ARTIFACT_VERSION}/$ARTIFACT_NAME-${ARTIFACT_VERSION}${EXTENSION}" \
-O $PATH_FOR_ARTIFACT/$ARTIFACT_NAME-${ARTIFACT_VERSION}${EXTENSION}
18 changes: 18 additions & 0 deletions search/enterprise/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Runtime variables

Sets of variables configurable with your docker image

## metadata

```yaml

live-indexing-metadata:
image: alfresco-enterprise-search-metadata:YOUR-TAG
environment:
SPRING_ELASTICSEARCH_REST_URIS: http://elasticsearch:9200
SPRING_ACTIVEMQ_BROKERURL: nio://activemq:61616

```

- `SPRING_ELASTICSEARCH_REST_URIS` - Elasticsearch server, by default `http://elasticsearch:9200`
- `SPRING_ACTIVEMQ_BROKERURL` - Alfresco ActiveMQ, by default `nio://activemq:61616`
12 changes: 12 additions & 0 deletions search/enterprise/metadata/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM quay.io/alfresco/alfresco-base-java:jre17-rockylinux9

ENV PORT=8080
EXPOSE 8080

ADD search/enterprise/metadata/*-app.jar /opt/app.jar

HEALTHCHECK --interval=30s --timeout=3s --retries=3 --start-period=1m \
CMD curl -f http://localhost:8080/actuator/health || exit 1

COPY search/enterprise/metadata/entrypoint.sh /entrypoint.sh
CMD ["/entrypoint.sh"]
3 changes: 3 additions & 0 deletions search/enterprise/metadata/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

exec java $JAVA_OPTS -jar /opt/app.jar
Loading

0 comments on commit d7b7afe

Please sign in to comment.