Page MenuHomePhorge

podman_shared
No OneTemporary

Authored By
Unknown
Size
10 KB
Referenced Files
None
Subscribers
None

podman_shared

#!/bin/bash
PODMAN=podman
podman__build() {
path=$1
shift
name=$1
shift
if [[ "$CACHE_REGISTRY" != "" ]]; then
CACHE_ARGS="--layers --cache-from=$CACHE_REGISTRY/$name --cache-to=$CACHE_REGISTRY/$name --cache-ttl=24h"
fi
podman build $@ $CACHE_ARGS $path -t $name
}
podman__build_base() {
podman__build docker/base/ apheleia/almalinux9 -f almalinux9
podman__build docker/swoole apheleia/swoole
}
podman__build_webapp() {
podman__build docker/webapp kolab-webapp --ulimit nofile=65535:65535 \
${KOLAB_GIT_REMOTE:+"--build-arg=GIT_REMOTE=$KOLAB_GIT_REMOTE"} \
${KOLAB_GIT_REF:+"--build-arg=GIT_REF=$KOLAB_GIT_REF"}
}
podman__build_meet() {
podman__build docker/meet kolab-meet --ulimit nofile=65535:65535 \
${KOLAB_GIT_REMOTE:+"--build-arg=GIT_REMOTE=$KOLAB_GIT_REMOTE"} \
${KOLAB_GIT_REF:+"--build-arg=GIT_REF=$KOLAB_GIT_REF"}
}
podman__build_roundcube() {
podman__build docker/roundcube roundcube --ulimit nofile=65535:65535 \
${GIT_REMOTE_ROUNDCUBEMAIL:+"--build-arg=GIT_REMOTE_ROUNDCUBEMAIL=$GIT_REMOTE_ROUNDCUBEMAIL"} \
${GIT_REF_ROUNDCUBEMAIL:+"--build-arg=GIT_REF_ROUNDCUBEMAIL=$GIT_REF_ROUNDCUBEMAIL"} \
${GIT_REMOTE_ROUNDCUBEMAIL_PLUGINS:+"--build-arg=GIT_REMOTE_ROUNDCUBEMAIL_PLUGINS=$GIT_REMOTE_ROUNDCUBEMAIL_PLUGINS"} \
${GIT_REF_ROUNDCUBEMAIL_PLUGINS:+"--build-arg=GIT_REF_ROUNDCUBEMAIL_PLUGINS=$GIT_REF_ROUNDCUBEMAIL_PLUGINS"} \
${GIT_REMOTE_CHWALA:+"--build-arg=GIT_REMOTE_CHWALA=$GIT_REMOTE_CHWALA"} \
${GIT_REF_CHWALA:+"--build-arg=GIT_REF_CHWALA=$GIT_REF_CHWALA"} \
${GIT_REMOTE_SYNCROTON:+"--build-arg=GIT_REMOTE_SYNCROTON=$GIT_REMOTE_SYNCROTON"} \
${GIT_REF_SYNCROTON:+"--build-arg=GIT_REF_SYNCROTON=$GIT_REF_SYNCROTON"} \
${GIT_REMOTE_AUTOCONF:+"--build-arg=GIT_REMOTE_AUTOCONF=$GIT_REMOTE_AUTOCONF"} \
${GIT_REF_AUTOCONF:+"--build-arg=GIT_REF_AUTOCONF=$GIT_REF_AUTOCONF"} \
${GIT_REMOTE_IRONY:+"--build-arg=GIT_REMOTE_IRONY=$GIT_REMOTE_IRONY"} \
${GIT_REF_IRONY:+"--build-arg=GIT_REF_IRONY=$GIT_REF_IRONY"} \
${GIT_REMOTE_FREEBUSY:+"--build-arg=GIT_REMOTE_FREEBUSY=$GIT_REMOTE_FREEBUSY"} \
${GIT_REF_FREEBUSY:+"--build-arg=GIT_REF_FREEBUSY=$GIT_REF_FREEBUSY"}
}
podman__build_postfix() {
podman__build docker/postfix kolab-postfix
}
podman__build_all() {
podman__build_base
podman__build_webapp
podman__build_meet
podman build docker/postfix -t kolab-postfix
podman build docker/imap -t kolab-imap
${IMAP_GIT_REMOTE:+"--build-arg=GIT_REMOTE=$IMAP_GIT_REMOTE"} \
${IMAP_GIT_REF:+"--build-arg=GIT_REF=$IMAP_GIT_REF"}
podman build docker/amavis -t kolab-amavis
podman build docker/collabora -t kolab-collabora --build-arg=REPOSITORY="https://www.collaboraoffice.com/repos/CollaboraOnline/23.05-CODE/CODE-rpm/"
podman build docker/mariadb -t mariadb
podman build docker/redis -t redis
podman build docker/proxy -t kolab-proxy
podman build docker/coturn -t kolab-coturn
podman build docker/utils -t kolab-utils
podman build docker/fluentbit -t fluentbit
podman__build_roundcube
}
kolab__validate() {
POD=$1
$PODMAN exec $POD-imap testsaslauthd -u cyrus-admin -p simple123
$PODMAN exec $POD-imap testsaslauthd -u "john@kolab.org" -p simple123
# Ensure the inbox is created
FOUND=false
for i in {1..60}; do
if $PODMAN exec $POD-imap bash -c 'echo "lm" | cyradm --auth PLAIN -u cyrus-admin -w simple123 --port 11143 localhost | grep "user/john@kolab.org"'; then
echo "Found mailbox";
FOUND=true
break
else
echo "Waiting for mailbox";
sleep 1;
fi
done
if ! $FOUND; then
echo "Failed to find the inbox for john@kolab.org"
exit 1
fi
}
podman__is_ready() {
if [[ "$(timeout 5 podman wait --condition running $1)" != "-1" ]]; then
echo "Container $1 is not running"
return 1
fi
# We can only wait for healthy if healthcheck is available
return 0
}
podman__healthcheck() {
for CONTAINER in $@; do
echo "Waiting for ${CONTAINER} become healthy "
while [ $(podman healthcheck run ${CONTAINER}) ]; do
echo -n "."; sleep 5;
done
done
}
podman__run_proxy() {
$PODMAN run -dt --pod $POD --name $POD-proxy --replace \
-v $CERTS_PATH:/etc/certs:ro \
-e APP_WEBSITE_DOMAIN \
-e SSL_CERTIFICATE="/etc/certs/imap.hosted.com.cert" \
-e SSL_CERTIFICATE_KEY="/etc/certs/imap.hosted.com.key" \
-e WEBAPP_BACKEND="http://localhost:8000" \
-e MEET_BACKEND="https://localhost:12443" \
-e ROUNDCUBE_BACKEND="http://localhost:8080" \
-e DAV_BACKEND="http://localhost:11080/dav" \
-e COLLABORA_BACKEND="http://localhost:9980" \
-e MATRIX_BACKEND="http://localhost:8008" \
-e ELEMENT_BACKEND="http://localhost:8880" \
-e SIEVE_BACKEND="localhost:4190" \
kolab-proxy:latest
}
podman__run_roundcube() {
$PODMAN run -dt --pod $POD --name $POD-roundcube --replace \
-v ./ext:/src.orig:ro \
-e APP_DOMAIN \
-e DES_KEY \
-e DB_HOST \
-e DB_RC_DATABASE="roundcube" \
-e DB_RC_USERNAME="roundcube" \
-e DB_RC_PASSWORD="${DB_PASSWORD:?"missing env variable"}" \
-e IMAP_HOST \
-e IMAP_PORT \
-e IMAP_ADMIN_LOGIN \
-e IMAP_ADMIN_PASSWORD \
-e MAIL_HOST \
-e MAIL_PORT \
-e IMAP_DEBUG \
-e KOLAB_FILES_SERVER_URL=http://localhost:8080/chwala \
-e FILEAPI_WOPI_OFFICE=http://localhost:9980 \
-e FILEAPI_KOLABFILES_BASEURI=http://localhost:8000/api \
-e FILE_API_SERVER_URL=http://localhost:8080/chwala/api/ \
-e KOLAB_ADDRESSBOOK_CARDDAV_SERVER=http://localhost:11080/dav \
-e CALENDAR_CALDAV_SERVER=http://localhost:11080/dav \
-e TASKLIST_CALDAV_SERVER=http://localhost:11080/dav \
roundcube:latest
}
podman__run_mariadb() {
$PODMAN run -dt --pod $POD --name $POD-mariadb --replace \
$MARIADB_STORAGE \
-e MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD:?"missing env variable"} \
-e TZ="+02:00" \
-e DB_HKCCP_DATABASE="kolabdev" \
-e DB_HKCCP_USERNAME="kolabdev" \
-e DB_HKCCP_PASSWORD=${DB_PASSWORD:?"missing env variable"} \
-e DB_KOLAB_DATABASE="kolab" \
-e DB_KOLAB_USERNAME="kolab" \
-e DB_KOLAB_PASSWORD=${DB_PASSWORD:?"missing env variable"} \
-e DB_RC_DATABASE="roundcube" \
-e DB_RC_USERNAME="roundcube" \
-e DB_RC_PASSWORD=${DB_PASSWORD:?"missing env variable"} \
--health-cmd "mysqladmin -u root ping && test -e /tmp/initialized" \
mariadb:latest
}
podman__run_redis() {
$PODMAN run -dt --pod $POD --name $POD-redis --replace \
$REDIS_STORAGE \
--health-cmd "redis-cli ping || exit 1" \
redis:latest
}
podman__run_minio() {
$PODMAN run -dt --pod $POD --name $POD-minio --replace \
$MINIO_STORAGE \
-e MINIO_ROOT_USER=${MINIO_USER:?"missing env variable"} \
-e MINIO_ROOT_PASSWORD=${MINIO_PASSWORD:?"missing env variable"} \
--health-cmd "mc ready local || exit 1" \
--entrypoint sh \
quay.io/minio/minio:latest -c 'mkdir -p /data/kolab && minio server /data --console-address ":9001"'
}
podman__run_webapp() {
# We run with a fixed config.demo overlay and override the environment with ci/env
$PODMAN run -dt --pod $POD --name $POD-webapp --replace \
--env-file=$1 \
-v ./src:/src/kolabsrc.orig:ro \
-v ./$2/src:/src/overlay:ro \
-e NOENVFILE=true \
-e APP_SERVICES_ALLOWED_DOMAINS="webapp,localhost,services.$HOST" \
-e KOLAB_ROLE=combined \
-e PASSPORT_PRIVATE_KEY="$PASSPORT_PRIVATE_KEY" \
-e PASSPORT_PUBLIC_KEY="$PASSPORT_PUBLIC_KEY" \
-e MINIO_ENDPOINT="http://localhost:9000" \
--health-cmd "./artisan octane:status || exit 1" \
kolab-webapp:latest
}
podman__run_imap() {
$PODMAN run -dt --pod $POD --name $POD-imap --replace \
$IMAP_SPOOL_STORAGE \
$IMAP_LIB_STORAGE \
-e APP_SERVICES_DOMAIN="localhost" \
-e SERVICES_PORT=8000 \
-e IMAP_ADMIN_LOGIN \
-e IMAP_ADMIN_PASSWORD \
--health-cmd "test -e /run/saslauthd/mux && kill -0 \$(cat /var/run/master.pid)" \
kolab-imap:latest
}
podman__run_postfix() {
$PODMAN run -dt --pod $POD --name $POD-postfix --replace \
--privileged \
$POSTFIX_SPOOL_STORAGE \
$POSTFIX_LIB_STORAGE \
-v $CERTS_PATH:/etc/certs:ro \
-e SSL_CERTIFICATE="$KOLAB_SSL_CERTIFICATE" \
-e SSL_CERTIFICATE_FULLCHAIN="$KOLAB_SSL_CERTIFICATE_FULLCHAIN" \
-e SSL_CERTIFICATE_KEY="$KOLAB_SSL_CERTIFICATE_KEY" \
-e APP_DOMAIN \
-e APP_SERVICES_DOMAIN="localhost" \
-e SERVICES_PORT=8000 \
-e AMAVIS_HOST=127.0.0.1 \
-e DB_HOST=127.0.0.1 \
-e DB_USERNAME \
-e DB_PASSWORD \
-e DB_DATABASE \
-e LMTP_DESTINATION="localhost:11024" \
--health-cmd "test -e /run/saslauthd/mux && kill -0 \$(cat /var/spool/postfix/pid/master.pid)" \
kolab-postfix:latest
}
podman__run_amavis() {
$PODMAN run -dt --pod $POD --name $POD-amavis --replace \
-e DB_HOST=localhost \
-e DB_USERNAME \
-e DB_PASSWORD \
-e DB_DATABASE \
kolab-amavis:latest
}
podman__run_collabora() {
$PODMAN run -dt --pod $POD --name $POD-collabora --replace \
--privileged \
-e ALLOWED_HOSTS=${APP_DOMAIN} \
kolab-collabora:latest
}
podman__run_meet() {
$PODMAN run -dt --pod $POD --name $POD-meet --replace \
-v ./meet/server:/src/meet:ro \
-v $CERTS_PATH/meet.${APP_DOMAIN}.cert:/etc/pki/tls/certs/meet.${APP_DOMAIN}.cert \
-v $CERTS_PATH/meet.${APP_DOMAIN}.key:/etc/pki/tls/private/meet.${APP_DOMAIN}.key \
-e WEBRTC_LISTEN_IP=127.0.0.1 \
-e WEBRTC_ANNOUNCED_ADDRESS=127.0.0.1 \
-e PUBLIC_DOMAIN=$APP_DOMAIN \
-e LISTENING_HOST=127.0.0.1 \
-e LISTENING_PORT=12443 \
-e DEBUG="*" \
-e TURN_SERVER=none \
-e AUTH_TOKEN=${MEET_SERVER_TOKEN} \
-e WEBHOOK_TOKEN=${MEET_WEBHOOK_TOKEN} \
-e WEBHOOK_URL=$APP_DOMAIN/api/webhooks/meet \
-e SSL_CERT=/etc/pki/tls/certs/meet.$APP_DOMAIN.cert \
-e SSL_KEY=/etc/pki/tls/private/meet.$APP_DOMAIN.key \
kolab-meet:latest
}

File Metadata

Mime Type
text/x-shellscript
Expires
Sun, Apr 5, 10:19 PM (2 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18831402
Default Alt Text
podman_shared (10 KB)

Event Timeline