added some files for alpine
This commit is contained in:
		
							
								
								
									
										77
									
								
								codepot/docker/Dockerfile.alpine
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								codepot/docker/Dockerfile.alpine
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,77 @@ | ||||
| ARG VROOT=/tmp/codepot-root | ||||
|  | ||||
| ### ------------------------------------------------------------------------------- | ||||
|  | ||||
| FROM alpine:3.15 as installer | ||||
|  | ||||
| ARG VROOT | ||||
|  | ||||
| RUN apk add --no-cache \ | ||||
| 	php7-dev subversion-dev make gcc musl-dev \ | ||||
| 	apache2 apache2-dev perl-dev alpine-sdk | ||||
|  | ||||
| COPY codepot-0.4.0.tar.gz /tmp | ||||
| COPY apache2-mod-perl/APKBUILD  /tmp | ||||
| COPY apache2-mod-perl/apache2-mod-perl.conf /tmp | ||||
|  | ||||
| RUN \ | ||||
| 	cd /tmp && \ | ||||
| 	abuild-keygen -n -a && \ | ||||
| 	cp -pfr /root/.abuild/*.rsa.pub /etc/apk/keys/ && \ | ||||
| 	abuild -F -d && \ | ||||
| 	tar -zxvf codepot-0.4.0.tar.gz && \ | ||||
| 	cd codepot-0.4.0 && \ | ||||
| 	./configure \ | ||||
| 		--prefix=/usr \ | ||||
| 		--libdir=/usr/lib64 \ | ||||
| 		--sysconfdir=/etc \ | ||||
| 		--with-wwwdir=/var/www/html \ | ||||
| 		--with-cfgdir=/etc/codepot \ | ||||
| 		--with-depotdir=/var/lib/codepot \ | ||||
| 		--with-logdir=/var/log/codepot \ | ||||
| 		--with-cachedir=/var/cache/codepot \ | ||||
| 		--with-phpextdir=`php-config --extension-dir` \ | ||||
| 		--with-phpextinidir=/etc/php7/conf.d \ | ||||
| 	make && make install DESTDIR=${VROOT} && rm -rf ${VROOT}/var/lib/codepot/* | ||||
|  | ||||
| RUN sed -ri -e 's|^database_hostname[[:space:]]*=[[:space:]]*"localhost"$|database_hostname = "/var/lib/codepot/codepot.db"|g' \ | ||||
|             -e 's|^database_driver[[:space:]]*=[[:space:]]*""$|database_driver = "sqlite"|g' \ | ||||
|             -e 's|^database_use_pdo[[:space:]]*=[[:space:]]*"no"$|database_use_pdo = "yes"|g' ${VROOT}/etc/codepot/codepot.ini  | ||||
|  | ||||
| RUN mkdir -p ${VROOT}/etc/apache2/conf.d && echo LoadModule dav_svn_module modules/mod_dav_svn.so > ${VROOT}/etc/apache2/conf.d/mod_dav_svn.conf | ||||
|  | ||||
| COPY alpine-httpd-fg.sh ${VROOT}/usr/sbin/ | ||||
| RUN tar -C ${VROOT} -zcvf /tmp/codepot-root.tar.gz . | ||||
|  | ||||
|  | ||||
| ### ------------------------------------------------------------------------------- | ||||
|  | ||||
| FROM alpine:3.15 | ||||
|  | ||||
| ARG VROOT | ||||
|  | ||||
| COPY --from=installer /tmp/codepot-root.tar.gz /tmp | ||||
| COPY --from=installer /root/packages/x86_64/apache2-mod-perl-2.0.12-r1.apk /tmp | ||||
|  | ||||
| RUN \ | ||||
| 	apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \ | ||||
| 		subversion apache2 libldap \ | ||||
| 		php7-apache2 php7-gd php7-sqlite3 php7-ldap \ | ||||
| 		php7-pdo php7-pdo_sqlite php7-pdo_mysql \ | ||||
| 		apache2-webdav mod_dav_svn \ | ||||
| 		perl-switch perl-config-simple perl-digest-sha1 \ | ||||
| 		perl-dbd-sqlite perl-ldap perl-subversion perl-mail-sendmail sqlite bash && \ | ||||
| 	apk add --allow-untrusted /tmp/apache2-mod-perl-2.0.12-r1.apk && \ | ||||
| 	rm -rf /var/www/html && \ | ||||
| 	tar -C / -zxvf /tmp/codepot-root.tar.gz && \ | ||||
| 	cp -pf /etc/codepot/codepot.httpd /etc/apache2/conf.d/codepot.conf && \ | ||||
| 	echo "PerlSwitches -Mlib=/etc/codepot/perl" >> /etc/apache2/conf.d/perl.conf && \ | ||||
| 	sed -ri -e 's|^max_execution_time[[:space:]]*=.*$|max_execution_time = 120|g' /etc/php7/php.ini && \ | ||||
| 	sed -ri -e 's|/var/www/localhost/htdocs|/var/www/html|g' \ | ||||
| 	        -e 's|^User apache$|User nobody|g' \ | ||||
| 	        -e 's|^Gruop apache$|Group nobody|g' \ | ||||
| 	        -e 's|^#(LoadModule rewrite_module modules/mod_rewrite.so)|\1|g' \ | ||||
| 		-e 's|AllowOverride None|AllowOverride All|g' /etc/apache2/httpd.conf && \ | ||||
| 	rm -rf /tmp/* | ||||
|  | ||||
| ENTRYPOINT ["/usr/sbin/alpine-httpd-fg.sh"] | ||||
| @ -1,17 +1,22 @@ | ||||
| DOCKER ?= DOCKER_BUILDKIT=1 docker | ||||
| ##DOCKER ?= DOCKER_BUILDKIT=1 docker | ||||
| DOCKER ?= docker | ||||
|  | ||||
| all: | ||||
| 	@echo "Choose one of the following targets:" | ||||
| 	@echo "  rocky ubnt" | ||||
| 	@echo "  alpine rocky ubnt" | ||||
|  | ||||
| ubnt: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:ubnt -f @srcdir@/Dockerfile.ubnt @srcdir@ || true | ||||
| alpine: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:ubnt -f @srcdir@/Dockerfile.alpine @srcdir@ || true | ||||
| 	rm -f @srcdir@/codepot-@VERSION@.tar.gz | ||||
|  | ||||
| rocky: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:rocky -f @srcdir@/Dockerfile.rocky @srcdir@ || true | ||||
| 	rm -f @srcdir@/codepot-@VERSION@.tar.gz | ||||
|  | ||||
| ubnt: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:ubnt -f @srcdir@/Dockerfile.ubnt @srcdir@ || true | ||||
| 	rm -f @srcdir@/codepot-@VERSION@.tar.gz | ||||
|  | ||||
| @srcdir@/codepot-@VERSION@.tar.gz: | ||||
| 	cd .. && make dist | ||||
| 	cp ../codepot-@VERSION@.tar.gz  @srcdir@/ | ||||
|  | ||||
| @ -410,20 +410,24 @@ uninstall-am: | ||||
|  | ||||
| .PRECIOUS: Makefile | ||||
|  | ||||
| DOCKER ?= DOCKER_BUILDKIT=1 docker | ||||
| DOCKER ?= docker | ||||
|  | ||||
| all: | ||||
| 	@echo "Choose one of the following targets:" | ||||
| 	@echo "  rocky ubnt" | ||||
| 	@echo "  alpine rocky ubnt" | ||||
|  | ||||
| ubnt: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:ubnt -f @srcdir@/Dockerfile.ubnt @srcdir@ || true | ||||
| alpine: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:ubnt -f @srcdir@/Dockerfile.alpine @srcdir@ || true | ||||
| 	rm -f @srcdir@/codepot-@VERSION@.tar.gz | ||||
|  | ||||
| rocky: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:rocky -f @srcdir@/Dockerfile.rocky @srcdir@ || true | ||||
| 	rm -f @srcdir@/codepot-@VERSION@.tar.gz | ||||
|  | ||||
| ubnt: @srcdir@/codepot-@VERSION@.tar.gz | ||||
| 	$(DOCKER) build -t codepot:ubnt -f @srcdir@/Dockerfile.ubnt @srcdir@ || true | ||||
| 	rm -f @srcdir@/codepot-@VERSION@.tar.gz | ||||
|  | ||||
| @srcdir@/codepot-@VERSION@.tar.gz: | ||||
| 	cd .. && make dist | ||||
| 	cp ../codepot-@VERSION@.tar.gz  @srcdir@/ | ||||
|  | ||||
							
								
								
									
										179
									
								
								codepot/docker/alpine-httpd-fg.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										179
									
								
								codepot/docker/alpine-httpd-fg.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,179 @@ | ||||
| #!/bin/bash | ||||
| set -e | ||||
|  | ||||
| CODEPOT_CONFIG_FILE="/var/lib/codepot/codepot.ini" | ||||
| HTTPD_CONFIG_FILE="/etc/apache2/httpd.conf" | ||||
|  | ||||
| SERVICE_PORT="" | ||||
| HIDE_INDEX_PAGE="" | ||||
| HTTPS_REDIRECTED="" | ||||
| while getopts ":hp:-:" oc | ||||
| do | ||||
| 	case "${oc}" in | ||||
| 	-) | ||||
| 		case "${OPTARG}" in | ||||
| 		port) | ||||
| 			opt=${OPTARG} | ||||
| 			SERVICE_PORT="${!OPTIND}" | ||||
| 			OPTIND=$(($OPTIND + 1)) | ||||
| 			;; | ||||
| 		port=*) | ||||
| 			SERVICE_PORT=${OPTARG#*=} | ||||
| 			opt=${OPTARG%=$val} | ||||
| 			;; | ||||
|  | ||||
| 		hide-index-page) | ||||
| 			opt=${OPTARG} | ||||
| 			HIDE_INDEX_PAGE="${!OPTIND}" | ||||
| 			OPTIND=$(($OPTIND + 1)) | ||||
| 			;; | ||||
|  | ||||
| 		hide-index-page=*) | ||||
| 			HIDE_INDEX_PAGE=${OPTARG#*=} | ||||
| 			opt=${OPTARG%=$val} | ||||
| 			;; | ||||
|  | ||||
| 		https-redirected) | ||||
| 			opt=${OPTARG} | ||||
| 			HTTPS_REDIRECTED="${!OPTIND}" | ||||
| 			OPTIND=$(($OPTIND + 1)) | ||||
| 			;; | ||||
|  | ||||
| 		https-redirected=*) | ||||
| 			HTTPS_REDIRECTED=${OPTARG#*=} | ||||
| 			opt=${OPTARG%=$val} | ||||
| 			;; | ||||
|  | ||||
| 		*) | ||||
| 			echo "Warning: unknown option - $OPTARG" | ||||
| 			;; | ||||
| 		esac | ||||
| 		;; | ||||
|  | ||||
| 	h) | ||||
| 		echo "-------------------------------------------------------------------------" | ||||
| 		echo "This container runs a http service on port 80." | ||||
| 		echo "Use an external reverse proxy to enable https as it doesn't" | ||||
| 		echo "enable the HTTP service." | ||||
| 		echo "Extra options allowed when running the container: " | ||||
| 		echo " -h                         print this help message" | ||||
| 		echo " -p                number   specify the port number" | ||||
| 		echo " -port             number   specify the port number" | ||||
| 		echo " -hide-index-page  yes/no   hide/show the index page script from the URL" | ||||
| 		echo " -https-redirected yes/no   indicate if the requets are HTTPS redirected" | ||||
| 		echo "-------------------------------------------------------------------------" | ||||
| 		exit 0 | ||||
| 		;; | ||||
| 	p) | ||||
| 		SERVICE_PORT=${OPTARG#*=} | ||||
| 		opt=${OPTARG%=$val} | ||||
| 		;; | ||||
|  | ||||
| 	*) | ||||
| 		echo "Warning: unknown option - $OPTARG" | ||||
| 		;; | ||||
| 	esac | ||||
| done | ||||
|  | ||||
| ## fall back to default values if the given values are not proper | ||||
| echo "${SERVICE_PORT}" | grep -q -E '^[[:digit:]]+$' || SERVICE_PORT="80" | ||||
| [[ "${HIDE_INDEX_PAGE}" == "" ]] && HIDE_INDEX_PAGE="no" | ||||
| [[ "${HTTPS_REDIRECTED}" == "" ]] && HTTPS_REDIRECTED="no" | ||||
|  | ||||
|  | ||||
| # Note: we don't just use "apache2ctl" here because it itself is just a shell-script wrapper around apache2 which provides extra functionality like "apache2ctl start" for launching apache2 in the background. | ||||
| # (also, when run as "apache2ctl <apache args>", it does not use "exec", which leaves an undesirable resident shell process) | ||||
|  | ||||
| : "${APACHE_CONFDIR:=/etc/apache2}" | ||||
| : "${APACHE_ENVVARS:=$APACHE_CONFDIR/envvars}" | ||||
| if test -f "$APACHE_ENVVARS"; then | ||||
| 	. "$APACHE_ENVVARS" | ||||
| fi | ||||
|  | ||||
| # Apache gets grumpy about PID files pre-existing | ||||
| : "${APACHE_RUN_DIR:=/var/run/apache2}" | ||||
| : "${APACHE_PID_FILE:=$APACHE_RUN_DIR/apache2.pid}" | ||||
| rm -f "$APACHE_PID_FILE" | ||||
|  | ||||
| # create missing directories | ||||
| # (especially APACHE_RUN_DIR, APACHE_LOCK_DIR, and APACHE_LOG_DIR) | ||||
| for e in "${!APACHE_@}"; do | ||||
| 	if [[ "$e" == *_DIR ]] && [[ "${!e}" == /* ]]; then | ||||
| 		# handle "/var/lock" being a symlink to "/run/lock", but "/run/lock" not existing beforehand, so "/var/lock/something" fails to mkdir | ||||
| 		#   mkdir: cannot create directory '/var/lock': File exists | ||||
| 		dir="${!e}" | ||||
| 		while [ "$dir" != "$(dirname "$dir")" ]; do | ||||
| 			dir="$(dirname "$dir")" | ||||
| 			if [ -d "$dir" ]; then | ||||
| 				break | ||||
| 			fi | ||||
| 			absDir="$(readlink -f "$dir" 2>/dev/null || :)" | ||||
| 			if [ -n "$absDir" ]; then | ||||
| 				mkdir -p "$absDir" | ||||
| 			fi | ||||
| 		done | ||||
|  | ||||
| 		mkdir -p "${!e}" | ||||
| 	fi | ||||
| done | ||||
|  | ||||
| [ ! -d /var/lib/codepot/attachments ] && mkdir -p /var/lib/codepot/attachments | ||||
| [ ! -d /var/lib/codepot/files ] && mkdir -p /var/lib/codepot/files | ||||
| [ ! -d /var/lib/codepot/issuefiles ] && mkdir -p /var/lib/codepot/issuefiles | ||||
| [ ! -d /var/lib/codepot/svnrepo ] && mkdir -p /var/lib/codepot/svnrepo | ||||
| [ ! -d /var/lib/codepot/usericons ] && mkdir -p /var/lib/codepot/usericons | ||||
| [ ! -f /var/lib/codepot/codepot.db ] && sqlite3 -init /etc/codepot/codepot.sqlite /var/lib/codepot/codepot.db "" | ||||
|  | ||||
| mkdir -p /var/cache/codepot /var/log/codepot | ||||
| chown -R nobody:nobody /var/lib/codepot /var/cache/codepot /var/log/codepot | ||||
|  | ||||
| [ ! -f "${CODEPOT_CONFIG_FILE}" ] && cp -pf /etc/codepot/codepot.ini "${CODEPOT_CONFIG_FILE}" | ||||
|  | ||||
| grep -F -q  '<Location "/">' /etc/apache2/conf.d/codepot.conf || { | ||||
|         cat <<EOF >> /etc/apache2/conf.d/codepot.conf | ||||
| <Location "/"> | ||||
|         SetEnv CODEPOT_CONFIG_FILE ${CODEPOT_CONFIG_FILE} | ||||
| </Location> | ||||
| EOF | ||||
| } | ||||
|  | ||||
| sed -r -i "s|PerlSetEnv CODEPOT_CONFIG_FILE .*\$|PerlSetEnv CODEPOT_CONFIG_FILE ${CODEPOT_CONFIG_FILE}|g" /etc/apache2/conf.d/codepot.conf | ||||
|  | ||||
|  | ||||
| ## change the port number as specified on the command line | ||||
| echo "Configuring to listen on the port[$SERVICE_PORT] hide-index-page[$HIDE_INDEX_PAGE] https-redirected[$HTTPS_REDIRECTED]" | ||||
|  | ||||
| sed -r -i "s|^Listen[[:space:]]+.*|Listen ${SERVICE_PORT}|g" "${HTTPD_CONFIG_FILE}" | ||||
|  | ||||
| if [[ "${HTTPS_REDIRECTED}" =~ [Yy][Ee][Ss] ]] | ||||
| then | ||||
| 	## The DAV COPY request contains the header 'Destination: https://' if the origin request | ||||
| 	## is HTTPS. This container is configured to server on HTTP only. If HTTPS is redirected | ||||
| 	## to HTTP, we must translate https:// to http:// in the Destination header. | ||||
| 	## Otherwise, the response is 502 Bad Gateway. | ||||
| 	echo "RequestHeader edit Destination ^https: http: early" > /etc/apache2/conf.d/codepot-dav-https-redirected.conf | ||||
| else | ||||
| 	rm -f /etc/apache2/conf.d/codepot-dav-https-redirected.conf | ||||
| fi | ||||
|  | ||||
| if [[ "${HIDE_INDEX_PAGE}" =~ [Yy][Ee][Ss] ]] | ||||
| then | ||||
| 	sed -r -i 's|^index_page[[:space:]]*=.*$|index_page=""|g' "${CODEPOT_CONFIG_FILE}" | ||||
|  | ||||
|         echo 'RewriteEngine On | ||||
| RewriteBase / | ||||
| RewriteCond %{REQUEST_FILENAME} !-f | ||||
| RewriteCond %{REQUEST_FILENAME} !-d | ||||
| RewriteRule ^(.*)$ index.php/$1 [L]' > /var/www/html/.htaccess | ||||
|  | ||||
| 	sed -r -i '/<Directory \/var\/www\/>/,/<\/Directory>/s|^[[:space:]]*AllowOverride[[:space:]]+.*$|\tAllowOverride All|g' "${HTTPD_CONFIG_FILE}" | ||||
|  | ||||
| else | ||||
| 	sed -r -i 's|^index_page[[:space:]]*=.*$|index_page="index.php"|g' "${CODEPOT_CONFIG_FILE}" | ||||
| 	rm -rf /var/www/html/.htaccess | ||||
|  | ||||
| 	sed -r -i '/<Directory \/var\/www\/>/,/<\/Directory>/s|^[[:space:]]*AllowOverride[[:space:]]+.*$|\tAllowOverride None|g' "${HTTPD_CONFIG_FILE}" | ||||
| fi | ||||
|  | ||||
| #httpd server in the foreground | ||||
| exec httpd -DFOREGROUND | ||||
							
								
								
									
										54
									
								
								codepot/docker/apache2-mod-perl/APKBUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								codepot/docker/apache2-mod-perl/APKBUILD
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| # Contributor: Valery Kartel <valery.kartel@gmail.com> | ||||
| # Contributor: Matt Smith <mcs@darkregion.net> | ||||
| # Maintainer: Matt Smith <mcs@darkregion.net> | ||||
| pkgname=apache2-mod-perl | ||||
| _pkgreal=mod_perl | ||||
| pkgver=2.0.12 | ||||
| pkgrel=1 | ||||
| pkgdesc="Perl Module for Apache2" | ||||
| url="https://perl.apache.org/" | ||||
| arch="all" | ||||
| license="Apache-2.0" | ||||
| depends="apache2" | ||||
| depends_dev="$pkgname" | ||||
| makedepends="apache2-dev perl-dev apr-dev apr-util-dev" | ||||
| options="!check" # fails to start test server | ||||
| subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev" | ||||
| source="https://archive.apache.org/dist/perl/$_pkgreal-$pkgver.tar.gz | ||||
| 	$pkgname.conf" | ||||
| builddir="$srcdir/$_pkgreal-$pkgver" | ||||
|  | ||||
| build() { | ||||
| 	perl Makefile.PL \ | ||||
| 		INSTALLDIRS=vendor \ | ||||
| 		MP_APXS=/usr/bin/apxs | ||||
| 	make | ||||
| } | ||||
|  | ||||
| check() { | ||||
| 	make test | ||||
| } | ||||
|  | ||||
|  | ||||
| package() { | ||||
| 	make DESTDIR="$pkgdir" install | ||||
| 	find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete | ||||
| 	install -Dm644 "$srcdir"/$pkgname.conf \ | ||||
| 		"$pkgdir"/etc/apache2/conf.d/$_pkgreal.conf | ||||
| } | ||||
|  | ||||
| dev() { | ||||
| 	default_dev | ||||
|  | ||||
| 	mv "$pkgdir"/usr/bin "$subpkgdir"/usr | ||||
|  | ||||
| 	mkdir -p "$subpkgdir"/usr/lib/perl5/vendor_perl/auto/Apache2 | ||||
| 	mv "$pkgdir"/usr/lib/perl5/vendor_perl/auto/Apache2/Build \ | ||||
| 		"$pkgdir"/usr/lib/perl5/vendor_perl/auto/Apache2/typemap \ | ||||
| 		"$subpkgdir"/usr/lib/perl5/vendor_perl/auto/Apache2 | ||||
| } | ||||
|  | ||||
| sha512sums=" | ||||
| 890dca0950847e32180485cabbeffbf236af2c92c7df957a233c210022b5172957eddb1db3e9281b87cd438d2fa404a05ae99c7eda098267c68d5e9262b400b0  mod_perl-2.0.12.tar.gz | ||||
| aa6acb5dc403dad0ed9761a3fb4121a4c73c247e0fce9615ff571c7071d2d1bf88fca140f304b2d559a7c153af317dddc0acbacf1ea86cb35becd757ee9a00bb  apache2-mod-perl.conf | ||||
| " | ||||
							
								
								
									
										8
									
								
								codepot/docker/apache2-mod-perl/apache2-mod-perl.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								codepot/docker/apache2-mod-perl/apache2-mod-perl.conf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| LoadModule perl_module modules/mod_perl.so | ||||
|  | ||||
| ##<Location /cgi-bin> | ||||
| ##    AddHandler perl-script .pl | ||||
| ##    PerlResponseHandler ModPerl::Registry | ||||
| ##    PerlOptions +ParseHeaders | ||||
| ##    Options +ExecCGI | ||||
| ##</Location> | ||||
		Reference in New Issue
	
	Block a user