FROM tomcat:10.1.54-jre21-temurin-noble

LABEL org.opencontainers.image.title=iPLAss
LABEL org.opencontainers.image.licenses=AGPL-3.0-only
LABEL org.opencontainers.image.url=https://iplass.org
LABEL org.opencontainers.image.vendor='DENTSU SOKEN INC.'
LABEL org.opencontainers.image.description='Java-based open source low-code development platform for enterprise'

# Deploy iPLAss installer
ARG iplass_version="4.0.19"
RUN set -ex \
	&& wget -q https://iplass.org/downloads/installer/${iplass_version}/iplass.war -O "${CATALINA_HOME}/webapps/iplass.war"

ENV IPLASS_HOME=/var/lib/iplass
VOLUME ["${IPLASS_HOME}"]
WORKDIR "${IPLASS_HOME}"

ENV IPLASS_DB_TYPE= \
	IPLASS_DB_CONN= \
	IPLASS_DS_NAME= \
	IPLASS_JDBC_DRIVER_CLASS= \
	IPLASS_JDBC_HOST= \
	IPLASS_JDBC_PORT= \
	IPLASS_JDBC_SERVICE_NAME= \
	IPLASS_JDBC_URL= \
	IPLASS_JDBC_USER= \
	IPLASS_JDBC_PASSWORD= \
	IPLASS_DOWNLOAD_URL_JDBC_DRIVER= \
	IPLASS_DOWNLOAD_URL_CONFIG_ZIP=

# Expose environment variables for $CATALINA_HOME/conf/server.xml.
ENV TOMCAT_CONNECTOR_HTTP_PORT=8080 \
	TOMCAT_CONNECTOR_HTTP_CONNECTION_TIMEOUT=20000 \
	TOMCAT_CONNECTOR_HTTP_REDIRECT_PORT=8443 \
	TOMCAT_CONNECTOR_HTTP_MAX_PARAMETER_COUNT=1000 \
	TOMCAT_CONNECTOR_HTTP_PROXY_NAME= \
	TOMCAT_CONNECTOR_HTTP_PROXY_PORT= \
	TOMCAT_CONNECTOR_HTTP_SCHEME=http \
	TOMCAT_CONNECTOR_HTTP_SECURE=false

# Replace $CATALINA_HOME/conf/server.xml http connector setting.
RUN REPLACE_TO='<Connector\n' \
	REPLACE_TO="${REPLACE_TO}        port=\"\${connector.http.port}\"\n" \
	REPLACE_TO="${REPLACE_TO}        protocol=\"HTTP\/1.1\"\n" \
	REPLACE_TO="${REPLACE_TO}        connectionTimeout=\"\${connector.http.connectionTimeout}\"\n" \
	REPLACE_TO="${REPLACE_TO}        redirectPort=\"\${connector.http.redirectPort}\"\n" \
	REPLACE_TO="${REPLACE_TO}        maxParameterCount=\"\${connector.http.maxParameterCount}\"\n" \
	REPLACE_TO="${REPLACE_TO}        proxyName=\"\${connector.http.proxyName}\"\n" \
	REPLACE_TO="${REPLACE_TO}        proxyPort=\"\${connector.http.proxyPort}\"\n" \
	REPLACE_TO="${REPLACE_TO}        scheme=\"\${connector.http.scheme}\"\n" \
	REPLACE_TO="${REPLACE_TO}        secure=\"\${connector.http.secure}\"\n" \
	REPLACE_TO="${REPLACE_TO}    \/>\n" \
	REPLACE_TO="${REPLACE_TO}<\!--\n    \1\n-->" && \
	sed -i -z "s/\(<Connector port=\"8080\" protocol=\"HTTP\/1\.1\"[a-zA-Z =0-9\"\n]*\/>\)/${REPLACE_TO}/g" $CATALINA_HOME/conf/server.xml

# JDBC Configuration
ENV JDBC_MSSQL_VERSION=13.4.0 \
	JDBC_MSSQL_JRE=jre11 \
	JDBC_POSTGRESQL_VERSION=42.7.10 \
	JDBC_MYSQL_VERSION=9.7.0
# bundle configuration
ENV IPLASS_BANDLE_HOME=${IPLASS_HOME}_bundle
ENV JDBC_BUNDLE_DIR=${IPLASS_BANDLE_HOME}/jdbc

# Install unzip. bundle JDBC drivers.
RUN apt-get update \
	&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
		unzip \
	&& apt-get clean \
	&& rm -rf /var/lib/apt/lists/* \
	&& export WORK_DIR=${IPLASS_BANDLE_HOME}/.tmp_bundle \
	&& mkdir -p ${WORKDIR} ${JDBC_BUNDLE_DIR} \
	&& wget -q --directory-prefix=${JDBC_BUNDLE_DIR} https://github.com/microsoft/mssql-jdbc/releases/download/v${JDBC_MSSQL_VERSION}/mssql-jdbc-${JDBC_MSSQL_VERSION}.${JDBC_MSSQL_JRE}.jar \
	&& wget -q --directory-prefix=${JDBC_BUNDLE_DIR} https://jdbc.postgresql.org/download/postgresql-${JDBC_POSTGRESQL_VERSION}.jar \
	&& wget -q --directory-prefix=${WORK_DIR} https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-${JDBC_MYSQL_VERSION}.tar.gz \
	&& tar zxf ${WORK_DIR}/mysql-connector-j-${JDBC_MYSQL_VERSION}.tar.gz -C ${WORK_DIR} mysql-connector-j-${JDBC_MYSQL_VERSION}/mysql-connector-j-${JDBC_MYSQL_VERSION}.jar mysql-connector-j-${JDBC_MYSQL_VERSION}/LICENSE \
	&& mv ${WORK_DIR}/mysql-connector-j-${JDBC_MYSQL_VERSION}/mysql-connector-j-${JDBC_MYSQL_VERSION}.jar ${JDBC_BUNDLE_DIR}/ \
	&& mv ${WORK_DIR}/mysql-connector-j-${JDBC_MYSQL_VERSION}/LICENSE ${JDBC_BUNDLE_DIR}/mysql-connector-j-${JDBC_MYSQL_VERSION}.LICENSE \
	&& rm -fr ${WORK_DIR} \
	&& unset WORK_DIR

# Copy entrypoint shell script file
COPY iplass-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/iplass-entrypoint.sh
ENTRYPOINT ["iplass-entrypoint.sh"]

CMD ["start", "tomcat"]
