diff --git a/.gitignore b/.gitignore index 90e2faf1b..8d2128e22 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ +# Temp make file for local builds and debug Makefile.temp diff --git a/CHANGELOG.md b/CHANGELOG.md index 90fb9761b..8a711e75c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## Changelog +### 2022 +* `january` + * fixed `apache2` + * added `php8` support + * extended `testrail` releases with `active directory` and `ldap` auth support. ### 2021 +* `december` + * added `git-lfs`, `lazygit`, bumped versions of nginx, jira, conflunce and bitbucket. + * added another git addons + * added `gh` - `github-cli` support * `october-november` * added `nginx:quic` image. UNSTABLE. * added `redash:latest` image in to `advanced` pack. diff --git a/Makefile b/Makefile index 61a561e98..3e61fe6c9 100644 --- a/Makefile +++ b/Makefile @@ -166,7 +166,6 @@ ecosystem-images: cd `pwd`/linux/ecosystem/nginx/latest/main && pwd && make cd `pwd`/linux/ecosystem/nginx/latest/php && pwd && make cd `pwd`/linux/ecosystem/nginx/latest/rtmp-hls && pwd && make - cd `pwd`/linux/ecosystem/nginx/latest/quic && pwd && make cd `pwd`/linux/advanced/vscode-server/latest && pwd && make build && make deploy cd `pwd`/linux/advanced/vscode-server/devops && pwd && make build && make deploy diff --git a/linux/ecosystem/apache2/latest/Dockerfile b/linux/ecosystem/apache2/latest/Dockerfile index c7a49b75e..db8a92b9e 100644 --- a/linux/ecosystem/apache2/latest/Dockerfile +++ b/linux/ecosystem/apache2/latest/Dockerfile @@ -59,6 +59,13 @@ RUN echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PH php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/apache2/latest/run.sh b/linux/ecosystem/apache2/latest/run.sh index e67d69a29..b421b8648 100755 --- a/linux/ecosystem/apache2/latest/run.sh +++ b/linux/ecosystem/apache2/latest/run.sh @@ -1,5 +1,18 @@ #!/bin/bash -chown www-data:www-data /var/www -R + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Skipping..." +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" source /etc/apache2/envvars tail -F /var/log/apache2/* & exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/apache2/php7.2/Dockerfile b/linux/ecosystem/apache2/php7.2/Dockerfile index d653289ec..ae31ddbc1 100644 --- a/linux/ecosystem/apache2/php7.2/Dockerfile +++ b/linux/ecosystem/apache2/php7.2/Dockerfile @@ -59,6 +59,13 @@ RUN echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.2.so" >> ${PH php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/apache2/php7.2/run.sh b/linux/ecosystem/apache2/php7.2/run.sh index e67d69a29..b421b8648 100755 --- a/linux/ecosystem/apache2/php7.2/run.sh +++ b/linux/ecosystem/apache2/php7.2/run.sh @@ -1,5 +1,18 @@ #!/bin/bash -chown www-data:www-data /var/www -R + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Skipping..." +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" source /etc/apache2/envvars tail -F /var/log/apache2/* & exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/apache2/php7.3/Dockerfile b/linux/ecosystem/apache2/php7.3/Dockerfile index 4f71b5beb..7848e964a 100644 --- a/linux/ecosystem/apache2/php7.3/Dockerfile +++ b/linux/ecosystem/apache2/php7.3/Dockerfile @@ -59,6 +59,13 @@ RUN echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.3.so" >> ${P php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini & \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/apache2/php7.3/run.sh b/linux/ecosystem/apache2/php7.3/run.sh index e67d69a29..b421b8648 100755 --- a/linux/ecosystem/apache2/php7.3/run.sh +++ b/linux/ecosystem/apache2/php7.3/run.sh @@ -1,5 +1,18 @@ #!/bin/bash -chown www-data:www-data /var/www -R + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Skipping..." +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" source /etc/apache2/envvars tail -F /var/log/apache2/* & exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/apache2/php7.4/Dockerfile b/linux/ecosystem/apache2/php7.4/Dockerfile index c7a49b75e..db8a92b9e 100644 --- a/linux/ecosystem/apache2/php7.4/Dockerfile +++ b/linux/ecosystem/apache2/php7.4/Dockerfile @@ -59,6 +59,13 @@ RUN echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PH php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/apache2/php7.4/run.sh b/linux/ecosystem/apache2/php7.4/run.sh index e67d69a29..b421b8648 100755 --- a/linux/ecosystem/apache2/php7.4/run.sh +++ b/linux/ecosystem/apache2/php7.4/run.sh @@ -1,5 +1,18 @@ #!/bin/bash -chown www-data:www-data /var/www -R + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Skipping..." +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" source /etc/apache2/envvars tail -F /var/log/apache2/* & exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/apache2/php8.0/Dockerfile b/linux/ecosystem/apache2/php8.0/Dockerfile new file mode 100644 index 000000000..044d2e2bf --- /dev/null +++ b/linux/ecosystem/apache2/php8.0/Dockerfile @@ -0,0 +1,113 @@ +FROM epicmorg/php:php8.0 +LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +ARG PHP_MODULE_VER=20200930 +ARG PHP_MODULE_PATH=/usr/lib/php/${PHP_MODULE_VER} +ARG PHP_VER=8.0 +ARG PHP_DIR=/etc/php/${PHP_VER} +ARG P4_PHP_INI=${PHP_DIR}/mods-available/perfroce.ini +ARG SMB_PHP_INI=${PHP_DIR}/mods-available/smbclient.ini + +################################################################## +# Installing Apache2 +################################################################## +#installing apache2 repo +RUN wget -O /etc/apt/trusted.gpg.d/apache2.gpg https://packages.sury.org/apache2/apt.gpg +RUN sh -c 'echo "deb https://packages.sury.org/apache2/ buster main" > /etc/apt/sources.list.d/apache2.list' + +#Install base packages +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + apache2 \ + apache2-utils \ + libapache2-mod-php8.0 \ + libapache2-mod-webauth \ + libapache2-mod-xforward \ + libapache2-mod-security2 && \ + a2enmod \ + php8.0 \ + rewrite \ + ldap \ + heartmonitor \ + auth_basic \ + authnz_ldap \ + headers \ + heartbeat \ + lua \ + mime \ + status \ + xml2enc \ + xforward \ + remoteip \ + filter \ + dav \ + dav_fs \ + alias && \ + ln -sf /etc/ssl/dhparam.pem /etc/apache2/dhparam.pem && \ + php -m && \ + php -v + +################################################################## +# LDAP Fix +################################################################## +RUN echo "TLS_REQCERT never" >> /etc/ldap/ldap.conf + +################################################################## +# Installing IOnCube addon +################################################################## +RUN echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/apache2/php.ini && \ + php -m && \ + php -v + +################################################################## +# Installing timezonedb addon +################################################################## +RUN echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + php -m && \ + php -v + +################################################################## +# Installing imagic addon +################################################################## +RUN echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/apache2/php.ini && \ + php -m && \ + php -v + +################################################################## +# Installing P4 addon +################################################################## +RUN ln -sf ${P4_PHP_INI} ${PHP_DIR}/apache2/conf.d/perforce.ini && \ + php -m && \ + php -v + +################################################################## +# Installing smbclient addon +################################################################## +RUN ln -sf ${SMB_PHP_INI} ${PHP_DIR}/apache2/conf.d/smbclient.ini && \ + php -m && \ + php -v + +################################################################## +# cleaninig up +################################################################## +RUN apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /tmp/deb/* && \ + rm -rfv /tmp/ioncube/* && \ + rm -rfv /tmp/composer-setup.php && \ + rm -rfv /tmp/ioncube.tar.gz + +#volumes +VOLUME ["/var/www"] + +# Add image configuration and scripts +COPY run.sh /run.sh +RUN chmod 755 /*.sh + +# Configure application +EXPOSE 80 +WORKDIR /var/www/ +CMD ["/run.sh"] diff --git a/linux/ecosystem/testrail/Makefile b/linux/ecosystem/apache2/php8.0/Makefile similarity index 100% rename from linux/ecosystem/testrail/Makefile rename to linux/ecosystem/apache2/php8.0/Makefile diff --git a/linux/ecosystem/apache2/php8.0/README.md b/linux/ecosystem/apache2/php8.0/README.md new file mode 100644 index 000000000..86a34d4b1 --- /dev/null +++ b/linux/ecosystem/apache2/php8.0/README.md @@ -0,0 +1,32 @@ +# Compose example + +```yml +version: '3.7' +services: + websites: + image: epicmorg/websites +# depends_on: +# - mysql +# - memcached + restart: unless-stopped + volumes: + - /etc/localtime:/etc/localtime + - /etc/timezone:/etc/timezone +# - /etc/letsencrypt:/etc/letsencrypt + - www:/var/www + - apache2:/etc/apache2 + - php:/etc/php + restart: unless-stopped +# extra_hosts: +# - "example.com:192.168.0.11" + tmpfs: + - /tmp + - /var/lib/php/sessions +volumes: + www: + external: true + apache2: + external: true + php: + external: true +``` diff --git a/linux/ecosystem/apache2/php8.0/docker-compose.yml b/linux/ecosystem/apache2/php8.0/docker-compose.yml new file mode 100644 index 000000000..608acd24c --- /dev/null +++ b/linux/ecosystem/apache2/php8.0/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/apache2:php8.0" + build: + context: . diff --git a/linux/ecosystem/apache2/php8.0/run.sh b/linux/ecosystem/apache2/php8.0/run.sh new file mode 100755 index 000000000..b421b8648 --- /dev/null +++ b/linux/ecosystem/apache2/php8.0/run.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Skipping..." +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" +source /etc/apache2/envvars +tail -F /var/log/apache2/* & +exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile b/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile index abff7dcaa..31e8e73b7 100644 --- a/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile +++ b/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile @@ -5,7 +5,7 @@ ARG DEBIAN_FRONTEND=noninteractive ################################################################## # ARGuments ################################################################## -ARG BITBUCKET_VERSION=7.11.2 +ARG BITBUCKET_VERSION=7.19.1 ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz ################################################################## diff --git a/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile.jdk11 b/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile.jdk11 index c33b2a5bb..c7f9f411c 100644 --- a/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile.jdk11 +++ b/linux/ecosystem/atlassian/bitbucket/latest/Dockerfile.jdk11 @@ -5,7 +5,7 @@ ARG DEBIAN_FRONTEND=noninteractive ################################################################## # ARGuments ################################################################## -ARG BITBUCKET_VERSION=7.11.2 +ARG BITBUCKET_VERSION=7.19.1 ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz ################################################################## diff --git a/linux/ecosystem/atlassian/confluence/latest/Dockerfile b/linux/ecosystem/atlassian/confluence/latest/Dockerfile index a0bf14609..33bbca38a 100644 --- a/linux/ecosystem/atlassian/confluence/latest/Dockerfile +++ b/linux/ecosystem/atlassian/confluence/latest/Dockerfile @@ -5,7 +5,7 @@ ARG DEBIAN_FRONTEND=noninteractive ################################################################## # ARGuments ################################################################## -ARG CONFLUENCE_VERSION=7.13.1 +ARG CONFLUENCE_VERSION=7.15.0 ARG DOWNLOAD_URL=https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz ################################################################## diff --git a/linux/ecosystem/atlassian/confluence/latest/Dockerfile.jdk11 b/linux/ecosystem/atlassian/confluence/latest/Dockerfile.jdk11 index cd8c3c562..eb52ba98a 100644 --- a/linux/ecosystem/atlassian/confluence/latest/Dockerfile.jdk11 +++ b/linux/ecosystem/atlassian/confluence/latest/Dockerfile.jdk11 @@ -5,7 +5,7 @@ ARG DEBIAN_FRONTEND=noninteractive ################################################################## # ARGuments ################################################################## -ARG CONFLUENCE_VERSION=7.13.1 +ARG CONFLUENCE_VERSION=7.15.0 ARG DOWNLOAD_URL=https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz ################################################################## diff --git a/linux/ecosystem/atlassian/jira/8/8.21.0/.env b/linux/ecosystem/atlassian/jira/8/8.21.0/.env new file mode 100644 index 000000000..7a3eda920 --- /dev/null +++ b/linux/ecosystem/atlassian/jira/8/8.21.0/.env @@ -0,0 +1,3 @@ + +RELEASE=8.21.0 +DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-8.21.0.tar.gz diff --git a/linux/ecosystem/atlassian/jira/8/8.21.0/Dockerfile b/linux/ecosystem/atlassian/jira/8/8.21.0/Dockerfile new file mode 100644 index 000000000..eeec7c1d8 --- /dev/null +++ b/linux/ecosystem/atlassian/jira/8/8.21.0/Dockerfile @@ -0,0 +1,49 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## + +#configured by dockerfile / .ENV +ARG RELEASE +ARG DOWNLOAD_URL + + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/linux/ecosystem/atlassian/jira/8/8.21.0/Dockerfile.jdk11 b/linux/ecosystem/atlassian/jira/8/8.21.0/Dockerfile.jdk11 new file mode 100644 index 000000000..a98a20e49 --- /dev/null +++ b/linux/ecosystem/atlassian/jira/8/8.21.0/Dockerfile.jdk11 @@ -0,0 +1,49 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## + +#configured by dockerfile / .ENV +ARG RELEASE +ARG DOWNLOAD_URL + + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/linux/ecosystem/atlassian/jira/8/8.21.0/Makefile b/linux/ecosystem/atlassian/jira/8/8.21.0/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/ecosystem/atlassian/jira/8/8.21.0/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/ecosystem/atlassian/jira/8/8.21.0/docker-compose.yml b/linux/ecosystem/atlassian/jira/8/8.21.0/docker-compose.yml new file mode 100644 index 000000000..81592d775 --- /dev/null +++ b/linux/ecosystem/atlassian/jira/8/8.21.0/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3.9' +services: + app: + image: "epicmorg/jira:${RELEASE}" + build: + context: . + args: + RELEASE: ${RELEASE} + DOWNLOAD_URL: ${DOWNLOAD_URL} + app-jdk11: + image: "epicmorg/jira:${RELEASE}-jdk11" + build: + context: . + dockerfile: Dockerfile.jdk11 + args: + RELEASE: ${RELEASE} + DOWNLOAD_URL: ${DOWNLOAD_URL} diff --git a/linux/ecosystem/atlassian/jira/8/8.21.0/entrypoint.sh b/linux/ecosystem/atlassian/jira/8/8.21.0/entrypoint.sh new file mode 100755 index 000000000..50ee4ecd1 --- /dev/null +++ b/linux/ecosystem/atlassian/jira/8/8.21.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/linux/ecosystem/atlassian/jira/latest/.env b/linux/ecosystem/atlassian/jira/latest/.env index 0aaefcf4d..7a3eda920 100644 --- a/linux/ecosystem/atlassian/jira/latest/.env +++ b/linux/ecosystem/atlassian/jira/latest/.env @@ -1,3 +1,3 @@ -RELEASE=8.17.1 -DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-8.17.1.tar.gz +RELEASE=8.21.0 +DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-8.21.0.tar.gz diff --git a/linux/ecosystem/epicmorg/edge/main/Dockerfile b/linux/ecosystem/epicmorg/edge/main/Dockerfile index 6c340284e..16b397180 100644 --- a/linux/ecosystem/epicmorg/edge/main/Dockerfile +++ b/linux/ecosystem/epicmorg/edge/main/Dockerfile @@ -2,11 +2,17 @@ FROM epicmorg/prod LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive +################################################################## +# git-lfs official binary +################################################################## +RUN rm -rfv /etc/apt/sources.list.d/github_git-lfs.list +COPY sources.list.d/github_git-lfs.list /etc/apt/sources.list.d/github_git-lfs.list + ################################################################## # bullseye sources list ################################################################## RUN rm -rfv /etc/apt/sources.list -COPY sources.list /etc/apt/sources.list +COPY sources.list.d/sources.list /etc/apt/sources.list RUN apt update && \ apt autoremove -y && \ apt-get install -y libc6 libxml2-utils && \ diff --git a/linux/ecosystem/epicmorg/edge/main/sources.list.d/github_git-lfs.list b/linux/ecosystem/epicmorg/edge/main/sources.list.d/github_git-lfs.list new file mode 100644 index 000000000..8cf93d426 --- /dev/null +++ b/linux/ecosystem/epicmorg/edge/main/sources.list.d/github_git-lfs.list @@ -0,0 +1,2 @@ +deb https://packagecloud.io/github/git-lfs/debian/ bullseye main +deb-src https://packagecloud.io/github/git-lfs/debian/ bullseye main diff --git a/linux/ecosystem/epicmorg/edge/main/sources.list b/linux/ecosystem/epicmorg/edge/main/sources.list.d/sources.list similarity index 100% rename from linux/ecosystem/epicmorg/edge/main/sources.list rename to linux/ecosystem/epicmorg/edge/main/sources.list.d/sources.list diff --git a/linux/ecosystem/epicmorg/prod/main/Dockerfile b/linux/ecosystem/epicmorg/prod/main/Dockerfile index e849863c1..c60d6adee 100644 --- a/linux/ecosystem/epicmorg/prod/main/Dockerfile +++ b/linux/ecosystem/epicmorg/prod/main/Dockerfile @@ -5,17 +5,22 @@ ARG DEBIAN_FRONTEND=noninteractive ################################################################## # buster sources list ################################################################## -COPY deb-multimedia-keyring.gpg /etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg +COPY trusted.gpg.d/deb-multimedia-keyring.gpg /etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg +COPY trusted.gpg.d/githubcli-archive-keyring.gpg /etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg + RUN rm /etc/apt/sources.list -COPY sources.list /etc/apt/sources.list +COPY sources.list.d/sources.list /etc/apt/sources.list + RUN apt update && apt dist-upgrade -y -COPY locale.gen /etc/locale.gen + +COPY etc/locale.gen /etc/locale.gen + RUN for i in $(seq 1 8); do mkdir -p "/usr/share/man/man${i}"; done ################################################################## # perforce client binary ################################################################## -ENV P4_VERSION=r21.1 +ENV P4_VERSION=r21.2 ENV P4_DOWNLOAD_URL=https://www.perforce.com/downloads/perforce/${P4_VERSION}/bin.linux26x86_64/p4 ################################################################## @@ -24,6 +29,12 @@ ENV P4_DOWNLOAD_URL=https://www.perforce.com/downloads/perforce/${P4_VERSION}/bi ENV SZ_VERSION=7z2103 ENV SZ_DOWNLOAD_URL=https://www.7-zip.org/a/${SZ_VERSION}-linux-x64.tar.xz +################################################################## +# LazyGit official binary +################################################################## +ENV LZGIT_VERSION=0.31.4 +ENV LZGIT_DOWNLOAD_URL=https://github.com/jesseduffield/lazygit/releases/download/v${LZGIT_VERSION}/lazygit_${LZGIT_VERSION}_Linux_x86_64.tar.gz + ################################################################## # installing utils ################################################################## @@ -47,6 +58,16 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio ffmpeg \ fontconfig \ git \ + git-extras \ + git-flow \ + git-cvs \ + git-doc \ + git-email \ + git-mediawiki \ + git-crypt \ + git-lfs \ + git-ftp \ + git-hub \ gnupg \ gnupg2 \ graphicsmagick \ @@ -98,6 +119,29 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio wget \ zip +################################################################## +# git-lfs official binary +################################################################## +#RUN curl -s https://packagecloud.io/github/git-lfs/gpgkey | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/git-lfs.gpg --import && \ +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6B05F25D762E3157 && \ + rm -rfv /etc/apt/sources.list.d/github_git-lfs.list +COPY sources.list.d/github_git-lfs.list /etc/apt/sources.list.d/github_git-lfs.list +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + git \ + git-lfs && \ + git --version && \ + git-lfs --version + +################################################################## +# gh official binary +################################################################## +COPY sources.list.d/github-cli.list /etc/apt/sources.list.d/github-cli.list +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + gh && \ + gh --version + ################################################################## # Install p4client ################################################################## @@ -115,6 +159,17 @@ RUN wget -nv --random-wait -c -O /tmp/7z.tar.xz ${SZ_DOWNLOAD_URL} && \ 7zz | head -4 && \ 7z | head -4 +################################################################## +# Install LazyGit official binary +################################################################## +RUN wget -nv --random-wait -c -O /tmp/lazygit.tar.xz ${LZGIT_DOWNLOAD_URL} && \ + mkdir -p /tmp/lazygit && \ + tar -zxvf /tmp/lazygit.tar.xz -C /tmp/lazygit && \ + chmod +x /tmp/lazygit/lazygit && \ + mv -fv /tmp/lazygit/lazygit /usr/bin/ && \ + echo "lazygit version:" && \ + lazygit --version + ################################################################## # Generate ssl key ################################################################## @@ -129,4 +184,5 @@ RUN apt purge policykit-1 -y && \ rm -rfv /var/lib/apt/lists/* && \ rm -rfv /tmp/mc.patch && \ rm -rfv /var/cache/apt/archives/*.deb && \ - rm -rfv /tmp/7z + rm -rfv /tmp/7z && \ + rm -rfv /tmp/lazygit diff --git a/linux/ecosystem/epicmorg/prod/main/locale.gen b/linux/ecosystem/epicmorg/prod/main/etc/locale.gen similarity index 100% rename from linux/ecosystem/epicmorg/prod/main/locale.gen rename to linux/ecosystem/epicmorg/prod/main/etc/locale.gen diff --git a/linux/ecosystem/epicmorg/prod/main/locale.gen.full b/linux/ecosystem/epicmorg/prod/main/etc/locale.gen.full similarity index 100% rename from linux/ecosystem/epicmorg/prod/main/locale.gen.full rename to linux/ecosystem/epicmorg/prod/main/etc/locale.gen.full diff --git a/linux/ecosystem/epicmorg/prod/main/sources.list.d/github-cli.list b/linux/ecosystem/epicmorg/prod/main/sources.list.d/github-cli.list new file mode 100644 index 000000000..4442663ff --- /dev/null +++ b/linux/ecosystem/epicmorg/prod/main/sources.list.d/github-cli.list @@ -0,0 +1 @@ +deb https://cli.github.com/packages stable main diff --git a/linux/ecosystem/epicmorg/prod/main/sources.list.d/github_git-lfs.list b/linux/ecosystem/epicmorg/prod/main/sources.list.d/github_git-lfs.list new file mode 100644 index 000000000..867534422 --- /dev/null +++ b/linux/ecosystem/epicmorg/prod/main/sources.list.d/github_git-lfs.list @@ -0,0 +1,2 @@ +deb https://packagecloud.io/github/git-lfs/debian/ buster main +deb-src https://packagecloud.io/github/git-lfs/debian/ buster main diff --git a/linux/ecosystem/epicmorg/prod/main/sources.list b/linux/ecosystem/epicmorg/prod/main/sources.list.d/sources.list similarity index 100% rename from linux/ecosystem/epicmorg/prod/main/sources.list rename to linux/ecosystem/epicmorg/prod/main/sources.list.d/sources.list diff --git a/linux/ecosystem/epicmorg/prod/main/deb-multimedia-keyring.gpg b/linux/ecosystem/epicmorg/prod/main/trusted.gpg.d/deb-multimedia-keyring.gpg similarity index 100% rename from linux/ecosystem/epicmorg/prod/main/deb-multimedia-keyring.gpg rename to linux/ecosystem/epicmorg/prod/main/trusted.gpg.d/deb-multimedia-keyring.gpg diff --git a/linux/ecosystem/epicmorg/prod/main/trusted.gpg.d/githubcli-archive-keyring.gpg b/linux/ecosystem/epicmorg/prod/main/trusted.gpg.d/githubcli-archive-keyring.gpg new file mode 100644 index 000000000..ce02b812e Binary files /dev/null and b/linux/ecosystem/epicmorg/prod/main/trusted.gpg.d/githubcli-archive-keyring.gpg differ diff --git a/linux/ecosystem/nginx/latest/main/.env b/linux/ecosystem/nginx/latest/main/.env index 00230635f..7de73fe60 100644 --- a/linux/ecosystem/nginx/latest/main/.env +++ b/linux/ecosystem/nginx/latest/main/.env @@ -1,2 +1,2 @@ NGINX_VERSION=latest -NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.21.3.tar.gz +NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.21.4.tar.gz diff --git a/linux/ecosystem/nginx/latest/main/Dockerfile b/linux/ecosystem/nginx/latest/main/Dockerfile index 2c3d58167..040057cfc 100644 --- a/linux/ecosystem/nginx/latest/main/Dockerfile +++ b/linux/ecosystem/nginx/latest/main/Dockerfile @@ -87,7 +87,7 @@ RUN wget -qO - ${NGINX_DOWNLOAD_URL} | tar -zxv --strip-components=1 -C ${NGINX_ git clone https://github.com/masterzen/nginx-upload-progress-module.git http-uploadprogress && \ git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module http-subs-filter && \ git clone https://github.com/grahamedgecombe/nginx-ct.git ssl-ct && \ - git clone https://github.com/stnoonan/spnego-http-auth-nginx-module.git spnego-http-auth-nginx-module && \ +# git clone https://github.com/stnoonan/spnego-http-auth-nginx-module.git spnego-http-auth-nginx-module && \ git clone https://github.com/leev/ngx_http_geoip2_module http-geoip2 && \ git clone https://github.com/flavioribeiro/nginx-audio-track-for-hls-module.git nginx-audio-track-for-hls-module && \ git clone https://github.com/chrislim2888/ip2location-nginx.git ip2location-nginx && \ @@ -167,7 +167,7 @@ RUN cd ${NGINX_SRC_DIR} && \ --add-dynamic-module=http-subs-filter \ --add-dynamic-module=ssl-ct \ --add-dynamic-module=http-geoip2 \ - --add-dynamic-module=spnego-http-auth-nginx-module \ +# --add-dynamic-module=spnego-http-auth-nginx-module \ --add-dynamic-module=http-auth-ldap \ # --add-dynamic-module=nginx-audio-track-for-hls-module \ --add-dynamic-module=ip2location-nginx \ diff --git a/linux/ecosystem/nginx/latest/php/.env b/linux/ecosystem/nginx/latest/php/.env index 00230635f..7de73fe60 100644 --- a/linux/ecosystem/nginx/latest/php/.env +++ b/linux/ecosystem/nginx/latest/php/.env @@ -1,2 +1,2 @@ NGINX_VERSION=latest -NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.21.3.tar.gz +NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.21.4.tar.gz diff --git a/linux/ecosystem/nginx/latest/rtmp-hls/.env b/linux/ecosystem/nginx/latest/rtmp-hls/.env index 00230635f..7de73fe60 100644 --- a/linux/ecosystem/nginx/latest/rtmp-hls/.env +++ b/linux/ecosystem/nginx/latest/rtmp-hls/.env @@ -1,2 +1,2 @@ NGINX_VERSION=latest -NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.21.3.tar.gz +NGINX_DOWNLOAD_URL=http://nginx.org/download/nginx-1.21.4.tar.gz diff --git a/linux/ecosystem/php/latest/Dockerfile b/linux/ecosystem/php/latest/Dockerfile index f687b4472..0b85b466e 100644 --- a/linux/ecosystem/php/latest/Dockerfile +++ b/linux/ecosystem/php/latest/Dockerfile @@ -187,6 +187,17 @@ RUN phpenmod \ php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN pecl install timezonedb && \ +# echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/php/php7.2/Dockerfile b/linux/ecosystem/php/php7.2/Dockerfile index 91d279a62..aba6eb87d 100644 --- a/linux/ecosystem/php/php7.2/Dockerfile +++ b/linux/ecosystem/php/php7.2/Dockerfile @@ -177,6 +177,17 @@ RUN phpenmod \ php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN pecl install timezonedb && \ +# echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/php/php7.3/Dockerfile b/linux/ecosystem/php/php7.3/Dockerfile index 36dec8493..ff42b5c4d 100644 --- a/linux/ecosystem/php/php7.3/Dockerfile +++ b/linux/ecosystem/php/php7.3/Dockerfile @@ -184,6 +184,17 @@ RUN phpenmod \ php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN pecl install timezonedb && \ +# echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/php/php7.4/Dockerfile b/linux/ecosystem/php/php7.4/Dockerfile index f687b4472..0b85b466e 100644 --- a/linux/ecosystem/php/php7.4/Dockerfile +++ b/linux/ecosystem/php/php7.4/Dockerfile @@ -187,6 +187,17 @@ RUN phpenmod \ php -m && \ php -v +################################################################## +# Installing timezonedb addon +################################################################## +RUN pecl install timezonedb && \ +# echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + ################################################################## # Installing imagic addon ################################################################## diff --git a/linux/ecosystem/php/php8.0/Dockerfile b/linux/ecosystem/php/php8.0/Dockerfile new file mode 100644 index 000000000..1c1d2c467 --- /dev/null +++ b/linux/ecosystem/php/php8.0/Dockerfile @@ -0,0 +1,281 @@ +FROM epicmorg/devel AS builder +LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ENV BuildDocker true + +ARG BUILDS_DIR=/builds +ARG SRC_DIR=${BUILDS_DIR}/src +ARG EXPORT_DIR=${BUILDS_DIR}/export +ARG P4API_DIR=${SRC_DIR}/p4api +ARG P4PHP_DIR=${SRC_DIR}/p4php +ARG MAKE_DIR=${SRC_DIR}/p4php-${PHP_VER} + +ARG P4API_VER=r21.1 +ARG P4API_URL=https://www.perforce.com/downloads/perforce/${P4API_VER}/bin.linux26x86_64/p4api.tgz + +ARG P4PHP_VER=r20.2 +ARG P4PHP_URL=https://www.perforce.com/downloads/perforce/${P4PHP_VER}/bin.tools/p4php.tgz + +ARG PHP_VER=8.0 +ARG PHP_MODULE_VER=20200930 +ARG PHP_MODULE_PATH=/usr/lib/php/${PHP_MODULE_VER} + +################################################################## +# Files and folders +################################################################## +RUN mkdir -p ${BUILDS_DIR} ${SRC_DIR} ${EXPORT_DIR} ${MAKE_DIR} ${P4API_DIR} ${P4PHP_DIR} + +################################################################## +# Installing PHP8 +################################################################## +RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ + sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' + +#Install base packages +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + libmemcached-dev \ + smbclient libsmbclient libsmbclient-dev \ + php8.0 \ + php8.0-dev \ + php8.0-fpm \ + php8.0-cli \ + php8.0-cgi + +################################################################## +# preparing p4src +################################################################## +RUN wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${P4API_DIR} && \ + wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \ + wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${P4PHP_DIR} && \ + wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \ + cd ${P4API_DIR} && \ + ls -las && \ + cd ${P4PHP_DIR} && \ + ls -las && \ + cd ${MAKE_DIR} && \ + ls -las && \ + cd ${SRC_DIR} && \ + ls -las + +################################################################## +# compilling p4src +################################################################## +RUN cd ${MAKE_DIR} && \ + ls -las && \ + phpize && \ + ./configure --with-perforce=${P4API_DIR} && \ + make && \ + make test && \ + make install && \ + cp ${PHP_MODULE_PATH}/perforce.so ${EXPORT_DIR} + +################################################################## +# compilling smbclient +################################################################## +RUN pecl install smbclient && \ + cp ${PHP_MODULE_PATH}/smbclient.so ${EXPORT_DIR} + +################################################################## +################################################################## +################################################################## + +FROM epicmorg/edge +LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +ARG PHP_MODULE_VER=20200930 +ARG PHP_MODULE_PATH=/usr/lib/php/${PHP_MODULE_VER} +ARG PHP_VER=8.0 +ARG PHP_DIR=/etc/php/${PHP_VER} +ARG P4_PHP_INI=${PHP_DIR}/mods-available/perfroce.ini +ARG SMB_PHP_INI=${PHP_DIR}/mods-available/smbclient.ini + +################################################################## +# Installing PHP8 +################################################################## +RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ + sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' + +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + libmemcached-dev \ + php8.0 \ + php8.0-dev \ + php8.0-fpm \ + php8.0-cli \ + php8.0-cgi \ + php-pear \ + php8.0-gmp \ + php8.0-snmp \ + php8.0-ldap \ + php8.0-mail \ + php8.0-soap \ + php8.0-mysql \ + php8.0-memcached \ + php8.0-memcache \ + php8.0-igbinary \ + php8.0-interbase \ + php8.0-curl \ + php8.0-gd \ + php8.0-intl \ + php8.0-zip \ + php8.0-bcmath \ + php8.0-imap \ + php8.0-pspell \ + php8.0-sqlite3 \ + php8.0-pgsql \ + php8.0-tidy \ + php8.0-xmlrpc \ + php8.0-xml \ + php8.0-mbstring \ + php8.0-apcu \ + php8.0-common \ +# php8.0-json \ + php8.0-readline \ + php8.0-enchant \ + php8.0-ssh2 \ + php8.0-oauth \ + php8.0-gmagick \ + php8.0-gnupg \ + php8.0-redis \ + smbclient libsmbclient \ + php8.0-yaml \ +# php8.0-geoip \ + sendmail && \ + ln -sf /etc/ssl/dhparam.pem /etc/php/dhparam.pem && \ + update-alternatives --set php /usr/bin/php8.0 && \ + pecl channel-update pecl.php.net && \ + php -m && \ + php -v + +################################################################## +# Enabling extensions +################################################################## +RUN phpenmod \ + snmp \ + gmp \ + calendar \ + ldap \ + curl \ + exif \ + ftp \ + fileinfo \ + gd \ + geoip \ + gnupg \ + iconv \ + imap \ + json \ + mbstring \ + memcached \ + mysqli \ + mysqlnd \ + oauth \ + pdo_mysql \ + pdo_sqlite \ + phar \ + posix \ + readline \ + redis \ + simplexml \ + sockets \ + sqlite3 \ + ssh2 \ + tokenizer \ + xml \ + xmlreader \ + xmlrpc \ + xmlwriter \ + xsl \ + yaml && \ + php -m && \ + php -v + +################################################################## +# Installing timezonedb addon +################################################################## +RUN pecl install timezonedb && \ +# echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + +################################################################## +# Installing imagic addon +################################################################## +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + libmagickwand-dev \ + imagemagick && \ + pecl install imagick && \ +# echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + +################################################################## +# not supported with php8 +################################################################## +# Installing IOnCube addon +################################################################# +#ADD https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz /tmp/ioncube.tar.gz +#RUN tar -C /tmp -xvf /tmp/ioncube.tar.gz && \ +# cp /tmp/ioncube/ioncube_loader_lin_7.4.so ${PHP_MODULE_PATH} && \ +## echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/apache2/php.ini && \ +# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cgi/php.ini && \ +# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cli/php.ini && \ +# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/fpm/php.ini && \ +# php -m && \ +# php -v + +################################################################## +# Installing P4 addon +################################################################## +COPY --from=builder /builds/export/perforce.so ${PHP_MODULE_PATH} +RUN echo "extension = ${PHP_MODULE_PATH}/perforce.so" > ${P4_PHP_INI} && \ + ln -sf ${P4_PHP_INI} ${PHP_DIR}/cgi/conf.d/perforce.ini && \ + ln -sf ${P4_PHP_INI} ${PHP_DIR}/cli/conf.d/perforce.ini && \ + ln -sf ${P4_PHP_INI} ${PHP_DIR}/fpm/conf.d/perforce.ini && \ + php -m && \ + php -v + +################################################################## +# Installing smbclient addon +################################################################## +COPY --from=builder /builds/export/smbclient.so ${PHP_MODULE_PATH} +RUN echo "extension = ${PHP_MODULE_PATH}/smbclient.so" > ${SMB_PHP_INI} && \ + ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cgi/conf.d/smbclient.ini && \ + ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cli/conf.d/smbclient.ini && \ + ln -sf ${SMB_PHP_INI} ${PHP_DIR}/fpm/conf.d/smbclient.ini && \ + php -m && \ + php -v + +################################################################## +# Installing Composer addon +################################################################## +RUN cd /tmp && \ + php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ + php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \ + rm /tmp/composer-setup.php + +################################################################## +# cleaninig up +################################################################## +RUN apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /tmp/deb/* && \ + rm -rfv /tmp/ioncube/* && \ + rm -rfv /tmp/composer-setup.php && \ + rm -rfv /tmp/ioncube.tar.gz + diff --git a/linux/ecosystem/php/php8.0/Makefile b/linux/ecosystem/php/php8.0/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/ecosystem/php/php8.0/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/ecosystem/php/php8.0/README.md b/linux/ecosystem/php/php8.0/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/linux/ecosystem/php/php8.0/docker-compose.yml b/linux/ecosystem/php/php8.0/docker-compose.yml new file mode 100644 index 000000000..f2025ac26 --- /dev/null +++ b/linux/ecosystem/php/php8.0/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/php:php8.0" + build: + context: . diff --git a/linux/ecosystem/php/php8.1-p4-not-ready/Dockerfile b/linux/ecosystem/php/php8.1-p4-not-ready/Dockerfile new file mode 100644 index 000000000..76fc73fcc --- /dev/null +++ b/linux/ecosystem/php/php8.1-p4-not-ready/Dockerfile @@ -0,0 +1,281 @@ +FROM epicmorg/devel AS builder +LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ENV BuildDocker true + + +ARG BUILDS_DIR=/builds +ARG SRC_DIR=${BUILDS_DIR}/src +ARG EXPORT_DIR=${BUILDS_DIR}/export +ARG P4API_DIR=${SRC_DIR}/p4api +ARG P4PHP_DIR=${SRC_DIR}/p4php +ARG PHP_VER=8.1 +ARG MAKE_DIR=${SRC_DIR}/p4php-${PHP_VER} +ARG P4API_VER=r21.1 +ARG P4API_URL=https://www.perforce.com/downloads/perforce/${P4API_VER}/bin.linux26x86_64/p4api.tgz + +ARG P4PHP_VER=r20.2 +ARG P4PHP_URL=https://www.perforce.com/downloads/perforce/${P4PHP_VER}/bin.tools/p4php.tgz + +ARG PHP_MODULE_VER=20210902 +ARG PHP_MODULE_PATH=/usr/lib/php/${PHP_MODULE_VER} + +################################################################## +# Files and folders +################################################################## +RUN mkdir -p ${BUILDS_DIR} ${SRC_DIR} ${EXPORT_DIR} ${MAKE_DIR} ${P4API_DIR} ${P4PHP_DIR} + +################################################################## +# Installing PHP8 +################################################################## +RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ + sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' + +#Install base packages +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + libmemcached-dev \ + smbclient libsmbclient libsmbclient-dev \ + php8.1 \ + php8.1-dev \ + php8.1-fpm \ + php8.1-cli \ + php8.1-cgi + +################################################################## +# preparing p4src +################################################################## +RUN wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${P4API_DIR} && \ + wget -qO - ${P4API_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \ + wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${P4PHP_DIR} && \ + wget -qO - ${P4PHP_URL} | tar -zxv --strip-components=1 -C ${MAKE_DIR} && \ + cd ${P4API_DIR} && \ + ls -las && \ + cd ${P4PHP_DIR} && \ + ls -las && \ + cd ${MAKE_DIR} && \ + ls -las && \ + cd ${SRC_DIR} && \ + ls -las + +################################################################## +# compilling p4src +################################################################## +RUN cd ${MAKE_DIR} && \ + ls -las && \ + phpize && \ + ./configure --with-perforce=${P4API_DIR} && \ + make && \ + make test && \ + make install && \ + cp ${PHP_MODULE_PATH}/perforce.so ${EXPORT_DIR} + +################################################################## +# compilling smbclient +################################################################## +RUN pecl install smbclient && \ + cp ${PHP_MODULE_PATH}/smbclient.so ${EXPORT_DIR} + +################################################################## +################################################################## +################################################################## + +FROM epicmorg/edge +LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +ARG PHP_MODULE_VER=20210902 +ARG PHP_MODULE_PATH=/usr/lib/php/${PHP_MODULE_VER} +ARG PHP_VER=8.1 +ARG PHP_DIR=/etc/php/${PHP_VER} +ARG P4_PHP_INI=${PHP_DIR}/mods-available/perfroce.ini +ARG SMB_PHP_INI=${PHP_DIR}/mods-available/smbclient.ini + +################################################################## +# Installing PHP8 +################################################################## +RUN wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \ + sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' + +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + libmemcached-dev \ + php8.1 \ + php8.1-dev \ + php8.1-fpm \ + php8.1-cli \ + php8.1-cgi \ + php-pear \ + php8.1-gmp \ + php8.1-snmp \ + php8.1-ldap \ + php8.1-mail \ + php8.1-soap \ + php8.1-mysql \ + php8.1-memcached \ + php8.1-memcache \ + php8.1-igbinary \ + php8.1-interbase \ + php8.1-curl \ + php8.1-gd \ + php8.1-intl \ + php8.1-zip \ + php8.1-bcmath \ + php8.1-imap \ + php8.1-pspell \ + php8.1-sqlite3 \ + php8.1-pgsql \ + php8.1-tidy \ + php8.1-xmlrpc \ + php8.1-xml \ + php8.1-mbstring \ + php8.1-apcu \ + php8.1-common \ +# php8.1-json \ + php8.1-readline \ + php8.1-enchant \ + php8.1-ssh2 \ + php8.1-oauth \ + php8.1-gmagick \ + php8.1-gnupg \ + php8.1-redis \ + smbclient libsmbclient \ + php8.1-yaml \ +# php8.1-geoip \ + sendmail && \ + ln -sf /etc/ssl/dhparam.pem /etc/php/dhparam.pem && \ + update-alternatives --set php /usr/bin/php8.1 && \ + pecl channel-update pecl.php.net && \ + php -m && \ + php -v + +################################################################## +# Enabling extensions +################################################################## +RUN phpenmod \ + snmp \ + gmp \ + calendar \ + ldap \ + curl \ + exif \ + ftp \ + fileinfo \ + gd \ + geoip \ + gnupg \ + iconv \ + imap \ + json \ + mbstring \ + memcached \ + mysqli \ + mysqlnd \ + oauth \ + pdo_mysql \ + pdo_sqlite \ + phar \ + posix \ + readline \ + redis \ + simplexml \ + sockets \ + sqlite3 \ + ssh2 \ + tokenizer \ + xml \ + xmlreader \ + xmlrpc \ + xmlwriter \ + xsl \ + yaml && \ + php -m && \ + php -v + +################################################################## +# Installing timezonedb addon +################################################################## +RUN pecl install timezonedb && \ +# echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/timezonedb.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + +################################################################## +# Installing imagic addon +################################################################## +RUN apt-get update && \ + apt-get install -y --allow-unauthenticated \ + libmagickwand-dev \ + imagemagick && \ + pecl install imagick && \ +# echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/apache2/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/cgi/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/cli/php.ini && \ + echo "extension = ${PHP_MODULE_PATH}/imagick.so" >> ${PHP_DIR}/fpm/php.ini && \ + php -m && \ + php -v + +################################################################## +# not supported with php8 +################################################################## +# Installing IOnCube addon +################################################################# +#ADD https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz /tmp/ioncube.tar.gz +#RUN tar -C /tmp -xvf /tmp/ioncube.tar.gz && \ +# cp /tmp/ioncube/ioncube_loader_lin_7.4.so ${PHP_MODULE_PATH} && \ +## echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/apache2/php.ini && \ +# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cgi/php.ini && \ +# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/cli/php.ini && \ +# echo "zend_extension = ${PHP_MODULE_PATH}/ioncube_loader_lin_7.4.so" >> ${PHP_DIR}/fpm/php.ini && \ +# php -m && \ +# php -v + +################################################################## +# Installing P4 addon +################################################################## +COPY --from=builder /builds/export/perforce.so ${PHP_MODULE_PATH} +RUN echo "extension = ${PHP_MODULE_PATH}/perforce.so" > ${P4_PHP_INI} && \ + ln -sf ${P4_PHP_INI} ${PHP_DIR}/cgi/conf.d/perforce.ini && \ + ln -sf ${P4_PHP_INI} ${PHP_DIR}/cli/conf.d/perforce.ini && \ + ln -sf ${P4_PHP_INI} ${PHP_DIR}/fpm/conf.d/perforce.ini && \ + php -m && \ + php -v + +################################################################## +# Installing smbclient addon +################################################################## +COPY --from=builder /builds/export/smbclient.so ${PHP_MODULE_PATH} +RUN echo "extension = ${PHP_MODULE_PATH}/smbclient.so" > ${SMB_PHP_INI} && \ + ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cgi/conf.d/smbclient.ini && \ + ln -sf ${SMB_PHP_INI} ${PHP_DIR}/cli/conf.d/smbclient.ini && \ + ln -sf ${SMB_PHP_INI} ${PHP_DIR}/fpm/conf.d/smbclient.ini && \ + php -m && \ + php -v + +################################################################## +# Installing Composer addon +################################################################## +RUN cd /tmp && \ + php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ + php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \ + rm /tmp/composer-setup.php + +################################################################## +# cleaninig up +################################################################## +RUN apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /tmp/deb/* && \ + rm -rfv /tmp/ioncube/* && \ + rm -rfv /tmp/composer-setup.php && \ + rm -rfv /tmp/ioncube.tar.gz + diff --git a/linux/ecosystem/php/php8.1-p4-not-ready/Makefile b/linux/ecosystem/php/php8.1-p4-not-ready/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/ecosystem/php/php8.1-p4-not-ready/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/ecosystem/php/php8.1-p4-not-ready/README.md b/linux/ecosystem/php/php8.1-p4-not-ready/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/linux/ecosystem/php/php8.1-p4-not-ready/docker-compose.yml b/linux/ecosystem/php/php8.1-p4-not-ready/docker-compose.yml new file mode 100644 index 000000000..85e910794 --- /dev/null +++ b/linux/ecosystem/php/php8.1-p4-not-ready/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/php:php8.1" + build: + context: . diff --git a/linux/ecosystem/teamcity/agent/android-sdk/Dockerfile b/linux/ecosystem/teamcity/agent/android-sdk/Dockerfile index f9c7f9e67..5391ccb0b 100644 --- a/linux/ecosystem/teamcity/agent/android-sdk/Dockerfile +++ b/linux/ecosystem/teamcity/agent/android-sdk/Dockerfile @@ -22,7 +22,7 @@ RUN echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > /usr/lib/android-sdk/licen ################################################################## # SDKMAN ################################################################## -RUN curl -s "https://get.sdkman.io" | bash +RUN curl -s "http://get.sdkman.io" | bash ################################################################## # Gradle diff --git a/linux/ecosystem/teamcity/agent/dotnet-sdk/Dockerfile b/linux/ecosystem/teamcity/agent/dotnet-sdk/Dockerfile index 91d2e5fa8..d8b140625 100644 --- a/linux/ecosystem/teamcity/agent/dotnet-sdk/Dockerfile +++ b/linux/ecosystem/teamcity/agent/dotnet-sdk/Dockerfile @@ -2,53 +2,65 @@ FROM epicmorg/teamcity-agent:latest LABEL maintainer="EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive +COPY sources.list.d/sources.11.list /etc/apt/sources.list.d/sources.11.list + ################################################################## # teamcity dotnet+powershell setup ################################################################## # Opt out of the telemetry feature ENV DOTNET_CLI_TELEMETRY_OPTOUT=true - # Disable first time experience ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true - # Configure Kestrel web server to bind to port 80 when present ENV ASPNETCORE_URLS=\ - # Enable detection of running in a container ENV DOTNET_RUNNING_IN_CONTAINER=true - # Enable correct mode for dotnet watch (only mode supported in a container) ENV DOTNET_USE_POLLING_FILE_WATCHER=true - # Skip extraction of XML docs - generally not useful within an image/container - helps perfomance ENV NUGET_XMLDOC_MODE=skip - #unofficial support of openssl1.1 instead of 1.0 [https://stackoverflow.com/questions/51901359] ENV CLR_OPENSSL_VERSION_OVERRIDE=45 - # PowerShell telemetry for docker image usage ENV POWERSHELL_DISTRIBUTION_CHANNEL=PSDocker-DotnetSDK-Debian-10 - #Install packages RUN curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - && \ - echo 'deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/debian/10/prod buster main' > /etc/apt/sources.list.d/microsoft.dotnet.list && \ + echo 'deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/debian/11/prod bullseye main' > /etc/apt/sources.list.d/microsoft.dotnet.list && \ apt-get update && \ apt-get install -y --no-install-recommends --allow-unauthenticated \ libc6 \ -# libgcc1 \ + libgcc1 \ libgssapi-krb5-2 \ libicu63 \ liblttng-ust0 \ libssl1.1 \ libstdc++6 \ zlib1g \ + dotnet-sdk-2.1 \ + dotnet-runtime-deps-2.1 \ + dotnet-runtime-2.1 \ + dotnet-hostfxr-2.1 \ + dotnet-sdk-3.1 \ + dotnet-targeting-pack-3.1 \ + dotnet-runtime-deps-3.1 \ + dotnet-runtime-3.1 \ + dotnet-hostfxr-3.1 \ + dotnet-apphost-pack-3.1 \ dotnet-sdk-5.0 \ dotnet-targeting-pack-5.0 \ dotnet-runtime-deps-5.0 \ dotnet-runtime-5.0 \ dotnet-hostfxr-5.0 \ dotnet-apphost-pack-5.0 \ + dotnet-sdk-6.0 \ + dotnet-targeting-pack-6.0 \ + dotnet-runtime-deps-6.0 \ + dotnet-runtime-6.0 \ + dotnet-hostfxr-6.0 \ + dotnet-apphost-pack-6.0 \ dotnet-host \ + procdump \ +# procmon \ powershell-preview \ powershell @@ -57,6 +69,25 @@ RUN dotnet help && \ pwsh-preview -v && \ pwsh -v + +################################################################## +# Mono +################################################################## +#RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \ +# echo "deb https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list && \ +# echo "deb https://download.mono-project.com/repo/debian nightly-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-nightly.list && \ +# echo "deb https://download.mono-project.com/repo/debian preview-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-preview.list && \ +# apt-get update && \ +# apt-get install -y --allow-unauthenticated \ +# mono-complete \ +# mono-llvm-support \ +# mono-devel \ +# mono-dbg \ +# referenceassemblies-pcl \ +# ca-certificates-mono +# mono-xsp4 + + ################################################################## # cleaninig up ################################################################## diff --git a/linux/ecosystem/teamcity/agent/dotnet-sdk/sources.list.d/sources.11.list b/linux/ecosystem/teamcity/agent/dotnet-sdk/sources.list.d/sources.11.list new file mode 100644 index 000000000..5a8c0081a --- /dev/null +++ b/linux/ecosystem/teamcity/agent/dotnet-sdk/sources.list.d/sources.11.list @@ -0,0 +1,21 @@ +#main +deb http://httpredir.debian.org/debian/ bullseye main contrib non-free +deb-src http://httpredir.debian.org/debian/ bullseye main contrib non-free +deb http://httpredir.debian.org/debian/ bullseye-updates main contrib non-free +deb-src http://httpredir.debian.org/debian/ bullseye-updates main contrib non-free +deb http://httpredir.debian.org/debian/ bullseye-backports main contrib non-free +deb-src http://httpredir.debian.org/debian/ bullseye-backports main contrib non-free +deb http://httpredir.debian.org/debian/ bullseye-proposed-updates main contrib non-free +deb-src http://httpredir.debian.org/debian/ bullseye-proposed-updates main contrib non-free + +#security +deb http://httpredir.debian.org/debian-security/ bullseye-security main contrib non-free +deb-src http://httpredir.debian.org/debian-security/ bullseye-security main contrib non-free +deb http://httpredir.debian.org/debian-security/ bullseye-security/updates main contrib non-free +deb-src http://httpredir.debian.org/debian-security/ bullseye-security/updates main contrib non-free + +##multimedia +# deb http://httpredir.debian.org/debian-multimedia/ bullseye main non-free +# deb-src http://httpredir.debian.org/debian-multimedia/ bullseye main non-free +# deb http://httpredir.debian.org/debian-multimedia/ bullseye-backports main +# deb-src http://httpredir.debian.org/debian-multimedia/ bullseye-backports main diff --git a/linux/ecosystem/testrail/Dockerfile b/linux/ecosystem/testrail/Dockerfile deleted file mode 100644 index 333409e38..000000000 --- a/linux/ecosystem/testrail/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM epicmorg/apache2:php7.4 - -ARG TESTRAIL_VERSION=latest -ARG DOWNLOAD_URL=https://secure.gurock.com/downloads/testrail/testrail-${TESTRAIL_VERSION}-ion71.zip -ARG TESTRAIL_RELEASE_DIR=testrail-release - -ENV TR_DEFAULT_TASK_EXECUTION=60 -ENV TR_CONFIGPATH="/var/www/testrail/config/" -ENV TR_DEFAULT_LOG_DIR="/opt/testrail/logs/" -ENV TR_DEFAULT_AUDIT_DIR="/opt/testrail/audit/" -ENV TR_DEFAULT_REPORT_DIR="/opt/testrail/reports/" -ENV TR_DEFAULT_ATTACHMENT_DIR="/opt/testrail/attachments/" -ENV OPENSSL_CONF=/etc/ssl/ - -RUN \ - apt-get update && \ - apt-get install -y --no-install-recommends zlib1g-dev libcurl4-gnutls-dev libldap2-dev zlib1g-dev libxml2-dev libfontconfig1 && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /run.sh - - -RUN \ - echo "WGET" && \ - mkdir -p /${TESTRAIL_RELEASE_DIR} && \ - mkdir -p /var/www/testrail && \ - mkdir -p /opt/testrail/attachments /opt/testrail/reports /opt/testrail/logs /opt/testrail/audit && \ - wget --no-check-certificate -O /${TESTRAIL_RELEASE_DIR}/testrail.zip ${DOWNLOAD_URL} && \ - chown -R www-data:www-data /${TESTRAIL_RELEASE_DIR} && \ - chown -R www-data:www-data /var/www/testrail && \ - chown -R www-data:www-data /opt/testrail - - -COPY apache_testrail.conf /${TESTRAIL_RELEASE_DIR}/apache-conf/000-default.conf -COPY run.sh /run.sh - -WORKDIR /var/www/testrail -EXPOSE 80 - -CMD ["/run.sh"] \ No newline at end of file diff --git a/linux/ecosystem/testrail/ad/Dockerfile b/linux/ecosystem/testrail/ad/Dockerfile new file mode 100644 index 000000000..2d15f799a --- /dev/null +++ b/linux/ecosystem/testrail/ad/Dockerfile @@ -0,0 +1,13 @@ +FROM epicmorg/testrail:latest + +ENV TESTRAIL_PLUGIN_VERSION=1.4 +ENV TESTRAIL_PLUGIN_NAME=ad +ENV TESTRAIL_PLUGIN_FULLNAME=testrail-auth-${TESTRAIL_PLUGIN_NAME}-${TESTRAIL_PLUGIN_VERSION} +ENV TESTRAIL_PLUGIN_FILE=${TESTRAIL_PLUGIN_FULLNAME}.zip +ENV TESTRAIL_PLUGIN_DONWLOAD_URL=https://media.gurock.com/gk-media/downloads/${TESTRAIL_PLUGIN_FILE} +ENV TESTRAIL_PLUGIN_TEMP=${TESTRAIL_RELEASE_DIR}/${TESTRAIL_PLUGIN_FILE} + +RUN rm -rfv /run.sh +COPY run.sh /run.sh + +RUN wget --no-check-certificate -O ${TESTRAIL_PLUGIN_TEMP} ${TESTRAIL_PLUGIN_DONWLOAD_URL} diff --git a/linux/ecosystem/testrail/ad/Makefile b/linux/ecosystem/testrail/ad/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/ecosystem/testrail/ad/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/ecosystem/testrail/README.md b/linux/ecosystem/testrail/ad/README.md similarity index 100% rename from linux/ecosystem/testrail/README.md rename to linux/ecosystem/testrail/ad/README.md diff --git a/linux/ecosystem/testrail/ad/docker-compose.yml b/linux/ecosystem/testrail/ad/docker-compose.yml new file mode 100644 index 000000000..0cf4314f7 --- /dev/null +++ b/linux/ecosystem/testrail/ad/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/testrail:auth-ad" + build: + context: . diff --git a/linux/ecosystem/testrail/ad/run.sh b/linux/ecosystem/testrail/ad/run.sh new file mode 100755 index 000000000..36c9a7dbc --- /dev/null +++ b/linux/ecosystem/testrail/ad/run.sh @@ -0,0 +1,68 @@ +#!/bin/bash +#set -e +#env + +################################################################################## + +function createOptDirectory { + if [ ! -d $1 ] + then + echo "[testrail] Creating " $1 + mkdir -p $1 + fi + + chown -R www-data:www-data $1 +} + +/bin/cp -rf ${TESTRAIL_RELEASE_DIR}/apache-conf/000-default.conf /etc/apache2/sites-enabled/000-default.conf + +echo "[testrail] Unzipping testrail service" +unzip -o ${TESTRAIL_RELEASE_DIR}/testrail.zip -d /var/www/ + +echo "[testrail] Unzipping testrail Active Directory auth plugin" +unzip -o -j ${TESTRAIL_RELEASE_DIR}/${TESTRAIL_PLUGIN_FILE} ${TESTRAIL_PLUGIN_FULLNAME}/auth.php -d ${TR_CUSTOM_AUTH_DIR} + +createOptDirectory ${TR_DEFAULT_LOG_DIR} +createOptDirectory ${TR_DEFAULT_AUDIT_DIR} +createOptDirectory ${TR_DEFAULT_REPORT_DIR} +createOptDirectory ${TR_DEFAULT_ATTACHMENT_DIR} + +chown -R www-data:www-data ${TR_CONFIG_DIR} + + +################################################################################# + +echo "[testrail] Waiting for background task file" +while [ ! -f /var/www/testrail/task.php ] +do + sleep 2 +done + +echo "[testrail] Starting background task" +while /bin/true; do + php /var/www/testrail/task.php || true + sleep ${TR_DEFAULT_TASK_EXECUTION} +done & +echo "[testrail] Background task stoped" + + +################################################################################# + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Fixing permissions anyway" + chown www-data:www-data /var/www -R +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" + +source /etc/apache2/envvars +tail -F /var/log/apache2/* & +exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/testrail/latest/Dockerfile b/linux/ecosystem/testrail/latest/Dockerfile new file mode 100644 index 000000000..a1776b29a --- /dev/null +++ b/linux/ecosystem/testrail/latest/Dockerfile @@ -0,0 +1,55 @@ +FROM epicmorg/apache2:php7.4 + +ENV TESTRAIL_VERSION=latest +ENV DOWNLOAD_URL=https://secure.gurock.com/downloads/testrail/testrail-${TESTRAIL_VERSION}-ion72.zip +ENV TR_DEFAULT_TASK_EXECUTION=60 + +ENV TESTRAIL_RELEASE_DIR=/testrail-release + +ENV TR_WWW_PATH=/var/www/testrail +ENV TR_CONFIGPATH=${TR_CONFIG_DIR} +ENV TR_CONFIG_DIR=${TR_WWW_PATH}/config +ENV TR_CUSTOM_DIR=${TR_WWW_PATH}/custom +ENV TR_CUSTOM_AUTH_DIR=${TR_CUSTOM_DIR}/auth + +ENV TR_OPT_PATH=/opt/testrail +ENV TR_DEFAULT_LOG_DIR=${TR_OPT_PATH}/logs +ENV TR_DEFAULT_AUDIT_DIR=${TR_OPT_PATH}/audit +ENV TR_DEFAULT_REPORT_DIR=${TR_OPT_PATH}/reports +ENV TR_DEFAULT_ATTACHMENT_DIR=${TR_OPT_PATH}/attachments + +ENV TR_OPTPATH="/opt/testrail/" +ENV TR_CONFIGPATH="/var/www/testrail/config/" + +ENV OPENSSL_CONF=/etc/ssl/ + +RUN \ + apt-get update && \ + apt-get install -y --no-install-recommends zlib1g-dev libcurl4-gnutls-dev libldap2-dev zlib1g-dev libxml2-dev libfontconfig1 && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* && \ + rm -rf /run.sh + + +RUN \ + echo "[testrail] Preparing folders" && \ + mkdir -p ${TESTRAIL_RELEASE_DIR} && \ + mkdir -p ${TR_WWW_PATH} && \ + mkdir -p ${TR_DEFAULT_ATTACHMENT_DIR} ${TR_DEFAULT_REPORT_DIR} ${TR_DEFAULT_AUDIT_DIR} ${TR_DEFAULT_LOG_DIR} && \ + echo "[testrail] Downloading and installing" && \ + wget --no-check-certificate -O ${TESTRAIL_RELEASE_DIR}/testrail.zip ${DOWNLOAD_URL} && \ + chown -R www-data:www-data ${TESTRAIL_RELEASE_DIR} && \ + unzip -o ${TESTRAIL_RELEASE_DIR}/testrail.zip -d /var/www/ && \ + chown -R www-data:www-data ${TR_WWW_PATH} && \ + ls -las ${TR_WWW_PATH} && \ + chown -R www-data:www-data ${TR_OPT_PATH} && \ + ls -las ${TR_OPT_PATH} + + +COPY apache_testrail.conf ${TESTRAIL_RELEASE_DIR}/apache-conf/000-default.conf +COPY run.sh /run.sh + +WORKDIR /var/www/testrail +EXPOSE 80 + +CMD ["/run.sh"] diff --git a/linux/ecosystem/testrail/latest/Makefile b/linux/ecosystem/testrail/latest/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/ecosystem/testrail/latest/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/ecosystem/testrail/latest/README.md b/linux/ecosystem/testrail/latest/README.md new file mode 100644 index 000000000..1aae0e92d --- /dev/null +++ b/linux/ecosystem/testrail/latest/README.md @@ -0,0 +1,36 @@ +## Testrail + +* Based on `websites:php7.2` of our ecosystem. + +# Compose example + +```yml +version: '3.7' +services: + testrail: + image: epicmorg/testrail +# depends_on: +# - mysql +# - memcached + restart: unless-stopped + volumes: + - /etc/localtime:/etc/localtime + - /etc/timezone:/etc/timezone +# - /etc/letsencrypt:/etc/letsencrypt + - www:/var/www + - apache2:/etc/apache2 + - php:/etc/php + restart: unless-stopped +# extra_hosts: +# - "example.com:192.168.0.11" + tmpfs: + - /tmp + - /var/lib/php/sessions +volumes: + www: + external: true + apache2: + external: true + php: + external: true +``` diff --git a/linux/ecosystem/testrail/apache_testrail.conf b/linux/ecosystem/testrail/latest/apache_testrail.conf similarity index 100% rename from linux/ecosystem/testrail/apache_testrail.conf rename to linux/ecosystem/testrail/latest/apache_testrail.conf diff --git a/linux/ecosystem/testrail/docker-compose.yml b/linux/ecosystem/testrail/latest/docker-compose.yml similarity index 100% rename from linux/ecosystem/testrail/docker-compose.yml rename to linux/ecosystem/testrail/latest/docker-compose.yml diff --git a/linux/ecosystem/testrail/latest/run.sh b/linux/ecosystem/testrail/latest/run.sh new file mode 100755 index 000000000..c1acfe1e4 --- /dev/null +++ b/linux/ecosystem/testrail/latest/run.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +#set -e +#env + +################################################################################## + +function createOptDirectory { + if [ ! -d $1 ] + then + echo "[testrail] Creating " $1 + mkdir -p $1 + fi + + chown -R www-data:www-data $1 +} + +/bin/cp -rf ${TESTRAIL_RELEASE_DIR}/apache-conf/000-default.conf /etc/apache2/sites-enabled/000-default.conf + +echo "[testrail] Unzipping testrail service" +unzip -o ${TESTRAIL_RELEASE_DIR}/testrail.zip -d /var/www/ + +createOptDirectory ${TR_DEFAULT_LOG_DIR} +createOptDirectory ${TR_DEFAULT_AUDIT_DIR} +createOptDirectory ${TR_DEFAULT_REPORT_DIR} +createOptDirectory ${TR_DEFAULT_ATTACHMENT_DIR} + +chown -R www-data:www-data ${TR_CONFIG_DIR} + + +################################################################################# + +echo "[testrail] Waiting for background task file" +while [ ! -f /var/www/testrail/task.php ] +do + sleep 2 +done + +echo "[testrail] Starting background task" +while /bin/true; do + php /var/www/testrail/task.php || true + sleep ${TR_DEFAULT_TASK_EXECUTION} +done & +echo "[testrail] Background task stoped" + + +################################################################################# + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Fixing permissions anyway" + chown www-data:www-data /var/www -R +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" + +source /etc/apache2/envvars +tail -F /var/log/apache2/* & +exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/testrail/ldap/Dockerfile b/linux/ecosystem/testrail/ldap/Dockerfile new file mode 100644 index 000000000..543fc5aab --- /dev/null +++ b/linux/ecosystem/testrail/ldap/Dockerfile @@ -0,0 +1,13 @@ +FROM epicmorg/testrail:latest + +ENV TESTRAIL_PLUGIN_VERSION=1.4 +ENV TESTRAIL_PLUGIN_NAME=ldap +ENV TESTRAIL_PLUGIN_FULLNAME=testrail-auth-${TESTRAIL_PLUGIN_NAME}-${TESTRAIL_PLUGIN_VERSION} +ENV TESTRAIL_PLUGIN_FILE=${TESTRAIL_PLUGIN_FULLNAME}.zip +ENV TESTRAIL_PLUGIN_DONWLOAD_URL=https://media.gurock.com/gk-media/downloads/${TESTRAIL_PLUGIN_FILE} +ENV TESTRAIL_PLUGIN_TEMP=${TESTRAIL_RELEASE_DIR}/${TESTRAIL_PLUGIN_FILE} + +RUN rm -rfv /run.sh +COPY run.sh /run.sh + +RUN wget --no-check-certificate -O ${TESTRAIL_PLUGIN_TEMP} ${TESTRAIL_PLUGIN_DONWLOAD_URL} diff --git a/linux/ecosystem/testrail/ldap/Makefile b/linux/ecosystem/testrail/ldap/Makefile new file mode 100644 index 000000000..bad6d73b5 --- /dev/null +++ b/linux/ecosystem/testrail/ldap/Makefile @@ -0,0 +1,19 @@ +all: app + +app: + make build + make deploy + make clean + +build: + docker-compose build --compress --parallel + +deploy: + docker-compose push + +clean: + docker container prune -f + docker image prune -f + docker network prune -f + docker volume prune -f + docker system prune -af diff --git a/linux/ecosystem/testrail/ldap/README.md b/linux/ecosystem/testrail/ldap/README.md new file mode 100644 index 000000000..1aae0e92d --- /dev/null +++ b/linux/ecosystem/testrail/ldap/README.md @@ -0,0 +1,36 @@ +## Testrail + +* Based on `websites:php7.2` of our ecosystem. + +# Compose example + +```yml +version: '3.7' +services: + testrail: + image: epicmorg/testrail +# depends_on: +# - mysql +# - memcached + restart: unless-stopped + volumes: + - /etc/localtime:/etc/localtime + - /etc/timezone:/etc/timezone +# - /etc/letsencrypt:/etc/letsencrypt + - www:/var/www + - apache2:/etc/apache2 + - php:/etc/php + restart: unless-stopped +# extra_hosts: +# - "example.com:192.168.0.11" + tmpfs: + - /tmp + - /var/lib/php/sessions +volumes: + www: + external: true + apache2: + external: true + php: + external: true +``` diff --git a/linux/ecosystem/testrail/ldap/docker-compose.yml b/linux/ecosystem/testrail/ldap/docker-compose.yml new file mode 100644 index 000000000..f3039e286 --- /dev/null +++ b/linux/ecosystem/testrail/ldap/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3.9' +services: + app: + image: "epicmorg/testrail:auth-ldap" + build: + context: . diff --git a/linux/ecosystem/testrail/ldap/run.sh b/linux/ecosystem/testrail/ldap/run.sh new file mode 100755 index 000000000..b09b3ea99 --- /dev/null +++ b/linux/ecosystem/testrail/ldap/run.sh @@ -0,0 +1,65 @@ +#!/bin/bash +#set -e + +function createOptDirectory { + if [ ! -d $1 ] + then + echo "[testrail] Creating " $1 + mkdir -p $1 + fi + + chown -R www-data:www-data $1 +} + +/bin/cp -rf ${TESTRAIL_RELEASE_DIR}/apache-conf/000-default.conf /etc/apache2/sites-enabled/000-default.conf + +echo "[testrail] Unzipping testrail service" +unzip -o ${TESTRAIL_RELEASE_DIR}/testrail.zip -d /var/www/ + +echo "[testrail] Unzipping testrail LDAP auth plugin" +unzip -o -j ${TESTRAIL_RELEASE_DIR}/${TESTRAIL_PLUGIN_FILE} ${TESTRAIL_PLUGIN_FULLNAME}/auth.php -d ${TR_CUSTOM_AUTH_DIR} + +createOptDirectory ${TR_DEFAULT_LOG_DIR} +createOptDirectory ${TR_DEFAULT_AUDIT_DIR} +createOptDirectory ${TR_DEFAULT_REPORT_DIR} +createOptDirectory ${TR_DEFAULT_ATTACHMENT_DIR} + +chown -R www-data:www-data ${TR_CONFIG_DIR} + + +################################################################################# + +echo "[testrail] Waiting for background task file" +while [ ! -f /var/www/testrail/task.php ] +do + sleep 2 +done + +echo "[testrail] Starting background task" +while /bin/true; do + php /var/www/testrail/task.php || true + sleep ${TR_DEFAULT_TASK_EXECUTION} +done & +echo "[testrail] Background task stoped" + + +################################################################################# + +if [[ -z "${FIX_WWW_DATA}" ]]; then + echo "[apache2] env FIX_WWW_DATA is not set. Fixing permissions anyway" + chown www-data:www-data /var/www -R +elif [ "${FIX_WWW_DATA}" == "false" ]; then + echo "[apache2] env FIX_WWW_DATA is set to false. Skipping..." +elif [ "${FIX_WWW_DATA}" == "true" ]; then + echo "[apache2] Changing permissions for /var/www path. Dont worry, please wait." + chown www-data:www-data /var/www -R + echo "[apache2] Done" +else + echo "[apache2] env FIX_WWW_DATA is set to strange value. Skipping..." +fi + +echo "[apache2] Starting up" + +source /etc/apache2/envvars +tail -F /var/log/apache2/* & +exec apache2 -D FOREGROUND diff --git a/linux/ecosystem/testrail/run.sh b/linux/ecosystem/testrail/run.sh deleted file mode 100755 index 8de0f623d..000000000 --- a/linux/ecosystem/testrail/run.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -#set -e - -function createOptDirectory { - if [ ! -d $1 ] - then - echo "Creating " $1 - mkdir -p $1 - fi - - chown -R www-data:www-data $1 -} - -/bin/cp -rf /testrail-release/apache-conf/000-default.conf /etc/apache2/sites-enabled/000-default.conf - -echo "##############" -echo "Unzipping testrail" -unzip /testrail-release/testrail.zip -d /var/www/ - -createOptDirectory $TR_DEFAULT_LOG_DIR -createOptDirectory $TR_DEFAULT_AUDIT_DIR -createOptDirectory $TR_DEFAULT_REPORT_DIR -createOptDirectory $TR_DEFAULT_ATTACHMENT_DIR - - -chown -R www-data:www-data /var/www/testrail/config - - -echo "##############" -echo "Waiting for background task file" -while [ ! -f /var/www/testrail/task.php ] -do - sleep 2 -done - -echo "Starting background task" -while /bin/true; do - php /var/www/testrail/task.php || true - sleep $TR_DEFAULT_TASK_EXECUTION -done & -echo "##############" - -chown www-data:www-data /var/www -R - -source /etc/apache2/envvars -tail -F /var/log/apache2/* & -exec apache2 -D FOREGROUND