Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117878580
podman_shared
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
10 KB
Referenced Files
None
Subscribers
None
podman_shared
View Options
#!/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
Details
Attached
Mime Type
text/x-shellscript
Expires
Sun, Apr 5, 10:19 PM (2 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18831402
Default Alt Text
podman_shared (10 KB)
Attached To
Mode
rK kolab
Attached
Detach File
Event Timeline