mirror of
				https://github.com/zokradonh/kopano-docker
				synced 2025-10-31 02:17:47 +00:00 
			
		
		
		
	Add container for kapps (which includes the new calendar) (#397)
* Add container for kapps (which includes the new calendar) * remove calendar.yml
This commit is contained in:
		
							parent
							
								
									e583247a58
								
							
						
					
					
						commit
						4e2060e491
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -8,7 +8,6 @@ | ||||
| **/.vscode | ||||
| apt_auth.conf | ||||
| build.tags | ||||
| calendar/kopano-calendar-*/ | ||||
| data/* | ||||
| dive.log | ||||
| docker-compose.override.yml | ||||
|  | ||||
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @ -10,6 +10,7 @@ docker_repo := zokradonh | ||||
| 
 | ||||
| base_download_version := $(shell ./version.sh core) | ||||
| core_download_version := $(shell ./version.sh core) | ||||
| kapps_download_version := $(shell ./version.sh kapps) | ||||
| meet_download_version := $(shell ./version.sh meet) | ||||
| webapp_download_version := $(shell ./version.sh webapp) | ||||
| zpush_download_version := $(shell ./version.sh zpush) | ||||
| @ -132,6 +133,9 @@ build-core-dagent: | ||||
| build-helper: | ||||
| 	component=build make build-simple | ||||
| 
 | ||||
| build-kapps: | ||||
| 	component=kapps make build | ||||
| 
 | ||||
| build-konnect: | ||||
| 	component=konnect make build-simple | ||||
| 
 | ||||
|  | ||||
| @ -12,7 +12,7 @@ ARG KOPANO_UID=999 | ||||
| ARG KOPANO_GID=999 | ||||
| 
 | ||||
| ENV \ | ||||
|     BASE_VERSION=2.0.0 \ | ||||
|     BASE_VERSION=2.1.0 \ | ||||
|     DEBIAN_FRONTEND=noninteractive \ | ||||
|     DEBUG="" | ||||
| 
 | ||||
| @ -73,7 +73,7 @@ RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ | ||||
| 
 | ||||
| # get common utilities | ||||
| COPY create-kopano-repo.sh /kopano/helper/ | ||||
| COPY kcconf.py /kopano/ | ||||
| COPY kcconf.py defaultconfigs/ /kopano/ | ||||
| 
 | ||||
| SHELL [ "/bin/bash", "-c"] | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| import os | ||||
| #!/usr/bin/env python3 | ||||
| import kcconf | ||||
| 
 | ||||
| # Override configs from environment variables | ||||
| @ -1,10 +0,0 @@ | ||||
| version: "3.5" | ||||
| services: | ||||
|   web: | ||||
|     volumes: | ||||
|       - ./calendar/kweb-calendar.cfg:/etc/kweb-extras/kweb-calendar.cfg | ||||
|       - ./calendar/kopano-calendar-0.20.0/:/usr/share/kopano-calendar/ | ||||
|       - ./calendar/kopano-calendar-0.20.0/config.json.in:/var/www/api/config/v1/kopano/calendar/config.json | ||||
|   kopano_grapi: | ||||
|     environment: | ||||
|       - KCCONF_GRAPI_ENABLE_EXPERIMENTAL_ENDPOINTS=yes | ||||
| @ -1 +0,0 @@ | ||||
| staticpwa /calendar /usr/share/kopano-calendar/calendar-webapp | ||||
| @ -173,7 +173,7 @@ services: | ||||
|       - kopanograpi/:/var/lib/kopano-grapi | ||||
|       - kopanosocket/:/run/kopano | ||||
|     environment: | ||||
|       - KCCONF_GRAPI_ENABLE_EXPERIMENTAL_ENDPOINTS=no | ||||
|       - KCCONF_GRAPI_ENABLE_EXPERIMENTAL_ENDPOINTS=no # needs to be set to yes for grapi versions prior to 10.3 to use calendar | ||||
|       - KCCONF_GRAPI_INSECURE=${INSECURE} | ||||
|       - KCCONF_GRAPI_PERSISTENCY_PATH=/var/lib/kopano-grapi | ||||
|       - SERVICE_TO_START=grapi | ||||
| @ -218,6 +218,26 @@ services: | ||||
|     tmpfs: | ||||
|       - /tmp | ||||
| 
 | ||||
|   kopano_kapps: | ||||
|     image: ${docker_repo:-zokradonh}/kopano_kapps:${CORE_VERSION:-latest} | ||||
|     read_only: true | ||||
|     restart: unless-stopped | ||||
|     environment: | ||||
|       - SERVICE_TO_START=kapps | ||||
|     env_file: | ||||
|       - kopano_kapps.env | ||||
|     depends_on: | ||||
|       - kopano_kapi | ||||
|       - kopano_konnect | ||||
|       - web | ||||
|     volumes: | ||||
|       - /etc/machine-id:/etc/machine-id | ||||
|       - /etc/machine-id:/var/lib/dbus/machine-id | ||||
|     networks: | ||||
|       - web-net | ||||
|     tmpfs: | ||||
|       - /tmp | ||||
| 
 | ||||
|   kopano_kdav: | ||||
|     image: ${docker_repo:-zokradonh}/kopano_kdav:${KDAV_VERSION:-latest} | ||||
|     read_only: true | ||||
| @ -457,7 +477,6 @@ services: | ||||
|       - KCCONF_MEET_guests_enabled=true | ||||
|       - KCCONF_MEET_oidc_useImplicitFlow=true # workaround for guest login with meet https://stash.kopano.io/projects/KWM/repos/meet/pull-requests/102/overview | ||||
|       - KCCONF_MEET_minimumVersion=20200121 # can be used force updates of Meet | ||||
|       - SERVICE_TO_START=meet | ||||
|     env_file: | ||||
|       - kopano_meet.env | ||||
|     depends_on: | ||||
|  | ||||
							
								
								
									
										63
									
								
								kapps/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								kapps/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | ||||
| ARG docker_repo=zokradonh | ||||
| FROM ${docker_repo}/kopano_base:latest | ||||
| 
 | ||||
| ARG ADDITIONAL_KOPANO_PACKAGES="" | ||||
| ARG DOWNLOAD_COMMUNITY_PACKAGES=1 | ||||
| ARG KOPANO_REPOSITORY_FLAGS="trusted=yes" | ||||
| ARG RELEASE_KEY_DOWNLOAD=0 | ||||
| ARG DEBIAN_FRONTEND=noninteractive | ||||
| ARG KOPANO_CORE_REPOSITORY_URL="file:/kopano/repo/core" | ||||
| ARG KOPANO_CORE_VERSION=newest | ||||
| ARG KOPANO_KAPPS_REPOSITORY_URL="file:/kopano/repo/kapps" | ||||
| ARG KOPANO_KAPPS_VERSION=newest | ||||
| ENV KOPANO_KAPPS_VERSION=$KOPANO_KAPPS_VERSION | ||||
| 
 | ||||
| ENV \ | ||||
|     ADDITIONAL_KOPANO_PACKAGES=$ADDITIONAL_KOPANO_PACKAGES \ | ||||
|     DOWNLOAD_COMMUNITY_PACKAGES=$DOWNLOAD_COMMUNITY_PACKAGES \ | ||||
|     KOPANO_CORE_REPOSITORY_URL=$KOPANO_CORE_REPOSITORY_URL \ | ||||
|     KOPANO_CORE_VERSION=$KOPANO_CORE_VERSION \ | ||||
|     KOPANO_REPOSITORY_FLAGS=$KOPANO_REPOSITORY_FLAGS \ | ||||
|     RELEASE_KEY_DOWNLOAD=$RELEASE_KEY_DOWNLOAD | ||||
| 
 | ||||
| LABEL maintainer=az@zok.xyz \ | ||||
|     org.label-schema.name="Kopano apps container" \ | ||||
|     org.label-schema.description="Container for running Kopano Apps" \ | ||||
|     org.label-schema.url="https://kopano.io" \ | ||||
|     org.label-schema.vcs-url="https://github.com/zokradonh/kopano-docker" \ | ||||
|     org.label-schema.version=$KOPANO_KAPPS_VERSION \ | ||||
|     org.label-schema.schema-version="1.0" | ||||
| 
 | ||||
| SHELL ["/bin/bash", "-o", "pipefail", "-c"] | ||||
| 
 | ||||
| # install Kopano Core and refresh ca-certificates | ||||
| RUN \ | ||||
|     # community download and package as apt source repository | ||||
|     . /kopano/helper/create-kopano-repo.sh && \ | ||||
|     if [ ${DOWNLOAD_COMMUNITY_PACKAGES} -eq 1 ]; then \ | ||||
|         dl_and_package_community "kapps"; \ | ||||
|     fi; \ | ||||
|     echo "deb [${KOPANO_REPOSITORY_FLAGS}] ${KOPANO_KAPPS_REPOSITORY_URL} ./" > /etc/apt/sources.list.d/kopano.list; \ | ||||
|     # install | ||||
|     apt-get update && \ | ||||
|     # TODO mime-support could be remove once its an official dependency of kopano-kwebd | ||||
|     apt-get install --no-install-recommends -y \ | ||||
|         mime-support \ | ||||
|         kopano-kwebd \ | ||||
|         kopano-calendar \ | ||||
|         ${ADDITIONAL_KOPANO_PACKAGES} \ | ||||
|         && \ | ||||
|     rm -rf /var/cache/apt /var/lib/apt/lists && \ | ||||
|     # make configuration a symlink to prevent overwriting it | ||||
|     # TODO better would be to override its configuration in kweb.cfg | ||||
|     ln -s /tmp/calendar.json /usr/share/kopano-kweb/www/config/kopano/calendar.json | ||||
| 
 | ||||
| COPY start-service.sh /kopano/ | ||||
| COPY goss.yaml /goss/ | ||||
| CMD [ "/kopano/start-service.sh" ] | ||||
| 
 | ||||
| HEALTHCHECK --interval=1m --timeout=10s \ | ||||
|     CMD goss -g /goss/goss.yaml validate | ||||
| 
 | ||||
| ARG VCS_REF | ||||
| LABEL org.label-schema.vcs-ref=$VCS_REF | ||||
							
								
								
									
										18
									
								
								kapps/goss.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								kapps/goss.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| file: | ||||
|   /tmp/calendar.json: | ||||
|     exists: true | ||||
|     mode: "0644" | ||||
|     owner: root | ||||
|     group: root | ||||
|     filetype: file | ||||
|     contains: [] | ||||
| process: | ||||
|   kwebd: | ||||
|     running: true | ||||
| http: | ||||
|   http://localhost:9080/calendar: | ||||
|     status: 200 | ||||
|     allow-insecure: false | ||||
|     no-follow-redirects: false | ||||
|     timeout: 5000 | ||||
|     body: [] | ||||
							
								
								
									
										78
									
								
								kapps/start-service.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										78
									
								
								kapps/start-service.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,78 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| ADDITIONAL_KOPANO_PACKAGES=${ADDITIONAL_KOPANO_PACKAGES:-""} | ||||
| 
 | ||||
| set -eu # unset variables are errors & non-zero return values exit the whole script | ||||
| [ "$DEBUG" ] && set -x | ||||
| 
 | ||||
| # copy configuration files to /tmp/kopano to prevent modification of mounted config files | ||||
| mkdir -p /tmp/kopano | ||||
| cp /etc/kopano/*.cfg /tmp/kopano | ||||
| 
 | ||||
| echo "Applying cfg changes from env" | ||||
| /usr/bin/python3 /kopano/cfg-from-env.py | ||||
| 
 | ||||
| meetversion=$(dpkg-query --showformat='${Version}' --show kopano-calendar-webapp) | ||||
| echo "Using Kopano Calendar: $meetversion" | ||||
| 
 | ||||
| # allow helper commands given by "docker-compose run" | ||||
| if [ $# -gt 0 ]; then | ||||
| 	exec "$@" | ||||
| 	exit | ||||
| fi | ||||
| 
 | ||||
| cp /usr/share/doc/kopano-calendar-webapp/config.json.in /tmp/calendar.json | ||||
| CONFIG_JSON="/tmp/calendar.json" | ||||
| # TODO move into extra file to make it easier to reuse | ||||
| echo "Updating $CONFIG_JSON" | ||||
| for setting in $(compgen -A variable KCCONF_CALENDAR); do | ||||
| 	setting2=${setting#KCCONF_CALENDAR_} | ||||
| 	# dots in setting2 need to be escaped to not be handled as separate entities in the json file | ||||
| 	case ${!setting} in | ||||
| 		true|TRUE|false|FALSE|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) | ||||
| 			jq ".\"${setting2//_/\".\"}\" = ${!setting}" $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| 			;; | ||||
| 		*) | ||||
| 			jq ".\"${setting2//_/\".\"}\" = \"${!setting}\"" $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| 			;; | ||||
| 		esac | ||||
| done | ||||
| 
 | ||||
| # Populate app grid | ||||
| # TODO move into extra file to make it easier to reuse | ||||
| # Note: if all of below variables are set to "no" kpop will fall back to its default behaviour and show all known apps. | ||||
| 
 | ||||
| # enable Kopano Konnect in the app grid | ||||
| if [ "${GRID_KONNECT:-yes}" = "yes" ]; then | ||||
| 	jq '.apps.enabled += ["kopano-konnect"]' $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| fi | ||||
| 
 | ||||
| # enable Kopano Meet in the app grid | ||||
| if [ "${GRID_MEET:-yes}" = "yes" ]; then | ||||
| 	jq '.apps.enabled += ["kopano-meet"]' $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| fi | ||||
| 
 | ||||
| # enable Kopano WebApp in the app grid | ||||
| if [ "${GRID_WEBAPP:-yes}" = "yes" ]; then | ||||
| 	jq '.apps.enabled += ["kopano-webapp"]' $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| fi | ||||
| 
 | ||||
| # enable Kopano WebApp in the app grid | ||||
| if [ "${GRID_CALENDAR:-yes}" = "yes" ]; then | ||||
| 	jq '.apps.enabled += ["kopano-calendar"]' $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| fi | ||||
| 
 | ||||
| sed s/\ *=\ */=/g /tmp/kopano/kwebd.cfg > /tmp/kweb-env | ||||
| # always disable tls | ||||
| export tls=no | ||||
| # shellcheck disable=SC2046 | ||||
| export $(grep -v '^#' /tmp/kweb-env | xargs -d '\n') | ||||
| 
 | ||||
| # services need to be aware of the machine-id | ||||
| dockerize \ | ||||
| 	-wait file:///etc/machine-id \ | ||||
| 	-wait file:///var/lib/dbus/machine-id | ||||
| 
 | ||||
| # cleaning up env variables | ||||
| unset "${!KCCONF_@}" | ||||
| exec kopano-kwebd serve | ||||
| @ -19,7 +19,8 @@ ENV \ | ||||
|     KOPANO_CORE_REPOSITORY_URL=$KOPANO_CORE_REPOSITORY_URL \ | ||||
|     KOPANO_CORE_VERSION=$KOPANO_CORE_VERSION \ | ||||
|     KOPANO_REPOSITORY_FLAGS=$KOPANO_REPOSITORY_FLAGS \ | ||||
|     RELEASE_KEY_DOWNLOAD=$RELEASE_KEY_DOWNLOAD | ||||
|     RELEASE_KEY_DOWNLOAD=$RELEASE_KEY_DOWNLOAD \ | ||||
|     SERVICE_TO_START=meet | ||||
| 
 | ||||
| LABEL maintainer=az@zok.xyz \ | ||||
|     org.label-schema.name="Kopano Meet container" \ | ||||
| @ -54,7 +55,7 @@ RUN --mount=type=secret,id=repocred,dst=/etc/apt/apt_auth.conf \ | ||||
|     # TODO better would be to override its configuration in kweb.cfg | ||||
|     ln -s /tmp/meet.json /usr/share/kopano-kweb/www/config/kopano/meet.json | ||||
| 
 | ||||
| COPY defaultconfigs/ start-service.sh /kopano/ | ||||
| COPY start-service.sh /kopano/ | ||||
| COPY goss.yaml /goss/ | ||||
| CMD [ "/kopano/start-service.sh" ] | ||||
| 
 | ||||
|  | ||||
| @ -9,13 +9,8 @@ set -eu # unset variables are errors & non-zero return values exit the whole scr | ||||
| mkdir -p /tmp/kopano | ||||
| cp /etc/kopano/*.cfg /tmp/kopano | ||||
| 
 | ||||
| if [ ! -e /kopano/"$SERVICE_TO_START".py ]; then | ||||
| 	echo "Invalid service specified: $SERVICE_TO_START" | ts | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| echo "Configure service '$SERVICE_TO_START'" | ts | ||||
| /usr/bin/python3 /kopano/"$SERVICE_TO_START".py | ||||
| echo "Applying cfg changes from env" | ||||
| /usr/bin/python3 /kopano/cfg-from-env.py | ||||
| 
 | ||||
| meetversion=$(dpkg-query --showformat='${Version}' --show kopano-meet-webapp) | ||||
| echo "Using Kopano Meet: $meetversion" | ||||
| @ -59,6 +54,11 @@ if [ "${GRID_WEBAPP:-yes}" = "yes" ]; then | ||||
| 	jq '.apps.enabled += ["kopano-webapp"]' $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| fi | ||||
| 
 | ||||
| # enable Kopano WebApp in the app grid | ||||
| if [ "${GRID_CALENDAR:-yes}" = "yes" ]; then | ||||
| 	jq '.apps.enabled += ["kopano-calendar"]' $CONFIG_JSON | sponge $CONFIG_JSON | ||||
| fi | ||||
| 
 | ||||
| sed s/\ *=\ */=/g /tmp/kopano/kwebd.cfg > /tmp/kweb-env | ||||
| # always disable tls | ||||
| export tls=no | ||||
|  | ||||
							
								
								
									
										2
									
								
								setup.sh
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.sh
									
									
									
									
									
								
							| @ -41,7 +41,7 @@ if [ ! -e /etc/machine-id ]; then | ||||
| fi | ||||
| 
 | ||||
| echo "Creating individual env files for containers (if they do not exist already)" | ||||
| for dockerenv in ldap password-self-service mail db kopano_ssl kopano_server kopano_webapp kopano_zpush kopano_grapi kopano_kapi kopano_dagent kopano_spooler kopano_gateway kopano_ical kopano_monitor kopano_scheduler kopano_search kopano_konnect kopano_kwmserver kopano_meet; do | ||||
| for dockerenv in ldap password-self-service mail db kopano_ssl kopano_server kopano_webapp kopano_zpush kopano_grapi kopano_kapi kopano_dagent kopano_spooler kopano_gateway kopano_ical kopano_monitor kopano_scheduler kopano_search kopano_konnect kopano_kwmserver kopano_meet kopano_kapps; do | ||||
| 	touch ./"$dockerenv".env | ||||
| done | ||||
| 
 | ||||
|  | ||||
| @ -22,17 +22,18 @@ ENV \ | ||||
| # This causes issues when using kweb in kubernetes. | ||||
| # Related issue https://github.com/docker/compose/issues/229 | ||||
| ENV \ | ||||
|     KWEBD_DNS_KONNECT="kopano_konnect" \ | ||||
|     KWEBD_DNS_MEET="kopano_meet" \ | ||||
|     KWEBD_DNS_KAPI="kopano_kapi" \ | ||||
|     KWEBD_DNS_PLAYGROUND="kopano_playground" \ | ||||
|     KWEBD_DNS_KWMSERVER="kopano_kwmserver" \ | ||||
|     KWEBD_DNS_WEBAPP="kopano_webapp" \ | ||||
|     KWEBD_DNS_ZPUSH="kopano_zpush" \ | ||||
|     KWEBD_DNS_ICAL="kopano_ical" \ | ||||
|     KWEBD_DNS_KDAV="kopano_kdav" \ | ||||
|     KWEBD_DNS_GRAPI="kopano_grapi" \ | ||||
|     KWEBD_DNS_ICAL="kopano_ical" | ||||
|     KWEBD_DNS_ICAL="kopano_ical" \ | ||||
|     KWEBD_DNS_ICAL="kopano_ical" \ | ||||
|     KWEBD_DNS_KAPI="kopano_kapi" \ | ||||
|     KWEBD_DNS_KAPPS="kopano_kapps" \ | ||||
|     KWEBD_DNS_KDAV="kopano_kdav" \ | ||||
|     KWEBD_DNS_KONNECT="kopano_konnect" \ | ||||
|     KWEBD_DNS_KWMSERVER="kopano_kwmserver" \ | ||||
|     KWEBD_DNS_MEET="kopano_meet" \ | ||||
|     KWEBD_DNS_PLAYGROUND="kopano_playground" \ | ||||
|     KWEBD_DNS_WEBAPP="kopano_webapp" \ | ||||
|     KWEBD_DNS_ZPUSH="kopano_zpush" | ||||
| 
 | ||||
| ENV DOCKERIZE_VERSION v0.6.1 | ||||
| RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ | ||||
|  | ||||
							
								
								
									
										15
									
								
								web/kweb.cfg
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								web/kweb.cfg
									
									
									
									
									
								
							| @ -145,6 +145,21 @@ | ||||
| 	} | ||||
| 	folderish /meet | ||||
| 
 | ||||
| 	proxy /api/config/v1/kopano/calendar/ http://{%KWEBD_DNS_KAPPS%}:9080/ { | ||||
| 		fail_timeout 10s | ||||
| 		try_duration 30s | ||||
| 		transparent | ||||
| 		keepalive 100 | ||||
| 	} | ||||
| 
 | ||||
| 	proxy /calendar/ {%KWEBD_DNS_KAPPS%}:9080 { | ||||
| 		fail_timeout 10s | ||||
| 		try_duration 30s | ||||
| 		transparent | ||||
| 		keepalive 100 | ||||
| 	} | ||||
| 	folderish /calendar | ||||
| 
 | ||||
| 	proxy /webapp/ {%KWEBD_DNS_WEBAPP%}:9080 { | ||||
| 		fail_timeout 10s | ||||
| 		try_duration 30s | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user