Merge pull request #65 from EpicMorg/develop

template-generator + new images pack 2
This commit is contained in:
STAM 2022-01-25 21:08:13 +03:00 committed by GitHub
commit 5bdd4cd889
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
75 changed files with 1713 additions and 120 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
# Temp make file for local builds and debug
Makefile.temp

View File

@ -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.

View File

@ -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

View File

@ -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
##################################################################

View File

@ -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

View File

@ -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
##################################################################

View File

@ -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

View File

@ -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
##################################################################

View File

@ -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

View File

@ -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
##################################################################

View File

@ -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

View File

@ -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"]

View File

@ -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
```

View File

@ -0,0 +1,6 @@
version: '3.9'
services:
app:
image: "epicmorg/apache2:php8.0"
build:
context: .

View File

@ -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

View File

@ -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
##################################################################

View File

@ -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
##################################################################

View File

@ -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
##################################################################

View File

@ -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
##################################################################

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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}

View File

@ -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

View File

@ -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

View File

@ -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 && \

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
deb https://cli.github.com/packages stable main

View File

@ -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

View File

@ -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

View File

@ -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 \

View File

@ -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

View File

@ -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

View File

@ -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
##################################################################

View File

@ -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
##################################################################

View File

@ -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
##################################################################

View File

@ -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
##################################################################

View File

@ -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

View File

@ -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

View File

View File

@ -0,0 +1,6 @@
version: '3.9'
services:
app:
image: "epicmorg/php:php8.0"
build:
context: .

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,6 @@
version: '3.9'
services:
app:
image: "epicmorg/php:php8.1"
build:
context: .

View File

@ -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

View File

@ -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
##################################################################

View File

@ -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

View File

@ -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"]

View File

@ -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}

View File

@ -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

View File

@ -0,0 +1,6 @@
version: '3.9'
services:
app:
image: "epicmorg/testrail:auth-ad"
build:
context: .

View File

@ -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

View File

@ -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"]

View File

@ -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

View File

@ -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
```

View File

@ -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

View File

@ -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}

View File

@ -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

View File

@ -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
```

View File

@ -0,0 +1,6 @@
version: '3.9'
services:
app:
image: "epicmorg/testrail:auth-ldap"
build:
context: .

View File

@ -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

View File

@ -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