[ACA-4715] provide support for Docker variables (#3329)

* provide support for Docker variables

* remove test code

* update docs
This commit is contained in:
Denys Vuika 2023-07-12 08:16:09 +01:00 committed by GitHub
parent 5abbda78a3
commit 1532d65a5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 149 additions and 1 deletions

View File

@ -17,6 +17,7 @@ RUN apk update && apk upgrade
USER 101
COPY docker/default.conf.template /etc/nginx/templates/
COPY docker/docker-entrypoint.d/* /docker-entrypoint.d/
COPY dist/content-ce /usr/share/nginx/html/
COPY dist/content-ce/app.config.json /etc/nginx/templates/app.config.json.template

View File

@ -0,0 +1,112 @@
#!/bin/sh
set -e
APP_CONFIG_FILE="${NGINX_ENVSUBST_OUTPUT_DIR}/app.config.json"
if [ -n "${APP_CONFIG_AUTH_TYPE}" ]; then
echo "SET APP_CONFIG_AUTH_TYPE"
sed -e "s/\"authType\": \".*\"/\"authType\": \"${APP_CONFIG_AUTH_TYPE}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_PROVIDER}" ]; then
echo "SET APP_CONFIG_PROVIDER"
sed -e "s/\"providers\": \".*\"/\"providers\": \"${APP_CONFIG_PROVIDER}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_IDENTITY_HOST}" ]; then
echo "SET APP_CONFIG_IDENTITY_HOST"
replace="\/"
encodedIdentity=${APP_CONFIG_IDENTITY_HOST//\//$replace}
sed -e "s/\"identityHost\": \".*\"/\"identityHost\": \"$encodedIdentity\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_OAUTH2_HOST}" ]; then
echo "SET APP_CONFIG_OAUTH2_HOST"
replace="\/"
encoded=${APP_CONFIG_OAUTH2_HOST//\//$replace}
sed -e "s/\"host\": \".*\"/\"host\": \"${encoded}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_OAUTH2_CLIENTID}" ]; then
echo "SET APP_CONFIG_OAUTH2_CLIENTID"
sed -e "s/\"clientId\": \".*\"/\"clientId\": \"${APP_CONFIG_OAUTH2_CLIENTID}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_OAUTH2_IMPLICIT_FLOW}" ]; then
echo "SET APP_CONFIG_OAUTH2_IMPLICIT_FLOW"
sed -e "s/\"implicitFlow\": [^,]*/\"implicitFlow\": ${APP_CONFIG_OAUTH2_IMPLICIT_FLOW}/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_OAUTH2_SILENT_LOGIN}" ]; then
echo "SET APP_CONFIG_OAUTH2_SILENT_LOGIN"
sed -e "s/\"silentLogin\": [^,]*/\"silentLogin\": ${APP_CONFIG_OAUTH2_SILENT_LOGIN}/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI}" ]; then
echo "SET APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI"
replace="\/"
encoded=${APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI//\//$replace}
sed -e "s/\"redirectSilentIframeUri\": \".*\"/\"redirectSilentIframeUri\": \"${encoded}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_OAUTH2_REDIRECT_LOGIN}" ]; then
echo "SET APP_CONFIG_OAUTH2_REDIRECT_LOGIN"
replace="\/"
encoded=${APP_CONFIG_OAUTH2_REDIRECT_LOGIN//\//$replace}
sed -e "s/\"redirectUri\": \".*\"/\"redirectUri\": \"${encoded}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_CONFIG_OAUTH2_REDIRECT_LOGOUT}" ]; then
echo "SET APP_CONFIG_OAUTH2_REDIRECT_LOGOUT"
replace="\/"
encoded=${APP_CONFIG_OAUTH2_REDIRECT_LOGOUT//\//$replace}
sed -e "s/\"redirectUriLogout\": \".*\"/\"redirectUriLogout\": \"${encoded}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [[ -n "${APP_CONFIG_BPM_HOST}" ]]; then
echo "SET APP_CONFIG_BPM_HOST"
replace="\/"
encoded=${APP_CONFIG_BPM_HOST//\//$replace}
sed -e "s/\"bpmHost\": \".*\"/\"bpmHost\": \"${encoded}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [[ -n "${APP_CONFIG_ECM_HOST}" ]]; then
echo "SET APP_CONFIG_ECM_HOST"
replace="\/"
encoded=${APP_CONFIG_ECM_HOST//\//$replace}
sed -e "s/\"ecmHost\": \".*\"/\"ecmHost\": \"${encoded}\"/g" \
-i "$APP_CONFIG_FILE"
fi
if [ -n "${APP_BASE_SHARE_URL}" ]; then
echo "SET APP_BASE_SHARE_URL"
replace="\/"
encoded=${APP_BASE_SHARE_URL//\//$replace}
sed -e "s/\"baseShareUrl\": \".*\"/\"baseShareUrl\": \"${encoded}\"/g" \
-i "$APP_CONFIG_FILE"
fi

View File

@ -8,4 +8,7 @@ docker rmi -f $DOCKER_IMAGE_REPO
docker build -t $DOCKER_IMAGE_REPO .
echo "http://localhost:${HOST_PORT}"
docker run --rm -it --user 1000:1000 --publish $HOST_PORT:$CONTAINER_PORT $DOCKER_IMAGE_REPO
docker run --rm -it \
--user 1000:1000 \
--publish $HOST_PORT:$CONTAINER_PORT $DOCKER_IMAGE_REPO

View File

@ -46,3 +46,35 @@ docker run --rm -it --user 1000:1000 --publish 8081:8080 alfresco/alfresco-conte
```
Navigate to `http://localhost:8081`.
## Docker Variables
There is a number of environment variables that you can define to override the default configuration:
**Example**
```shell
docker run --rm -it \
--env APP_CONFIG_AUTH_TYPE="OAUTH" \
--env APP_CONFIG_ECM_HOST="https://some.host.com" \
--user 1000:1000 \
--publish 8081:8080 alfresco/alfresco-content-app
```
### Configuration Mapping
| Name | Config Path |
|----------------------------------------------|----------------------------------|
| APP_CONFIG_AUTH_TYPE | `authType` |
| APP_CONFIG_PROVIDER | `providers` |
| APP_CONFIG_IDENTITY_HOST | `identityHost` |
| APP_CONFIG_BPM_HOST | `bpmHost` |
| APP_CONFIG_ECM_HOST | `ecmHost` |
| APP_BASE_SHARE_URL | `baseShareUrl` |
| APP_CONFIG_OAUTH2_HOST | `oauth2.host` |
| APP_CONFIG_OAUTH2_CLIENTID | `oauth2.clientId` |
| APP_CONFIG_OAUTH2_IMPLICIT_FLOW | `oauth2.implicitFlow` |
| APP_CONFIG_OAUTH2_SILENT_LOGIN | `oauth2.silentLogin` |
| APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI | `oauth2.redirectSilentIframeUri` |
| APP_CONFIG_OAUTH2_REDIRECT_LOGIN | `oauth2.redirectUri` |
| APP_CONFIG_OAUTH2_REDIRECT_LOGOUT | `oauth2.redirectUriLogout` |