FROM ubuntu:latest RUN apt-get -y update && apt-get -y upgrade RUN apt-get -y install openjdk-11-jdk curl unzip # Inspired by AMI image build # e.g. https://git.magnolia-cms.com/projects/OD/repos/mgnl-images/browse/modules/image-runtime/roles/webserver-tomcat9/defaults/main.yml ARG tomcat_base=/opt/tomcat ARG tomcat_home=/opt/tomcat ARG tomcat_group=magnolia ARG tomcat_user=magnolia ARG magnolia_home=/var/lib/magnolia ARG magnolia_temp=/var/tmp/magnolia/uploaded # Make the build arg accessible at runtime ENV tomcat_base=$tomcat_base ENV tomcat_user=$tomcat_user ENV magnolia_home=$magnolia_home ENV magnolia_temp=$magnolia_temp ENV CATALINA_HOME=$tomcat_home ENV CATALINA_LOG_DIR=$tomcat_base/logs # see overlays/info.magnolia.dx.magnolia-dx-core-cloud-webapp-6.2.1/WEB-INF/web.xml # see modules/image-magnolia/roles/magnolia-server/templates/setenv.sh.j2 # loads the according magnolia.properties files ENV INSTANCE_TYPE=author ENV MAGNOLIA_PROFILE=cloud # overlays/info.magnolia.dx.magnolia-dx-core-cloud-webapp-6.2.1/WEB-INF/config/cloud/repo-conf/jackrabbit-bundle-postgres-search.xml # overlays/info.magnolia.dx.magnolia-dx-core-cloud-webapp-6.2.1/WEB-INF/config/cloud/repo-conf/jackrabbit-bundle-postgres-conf-sec-search.xml ENV DB_ADDRESS=magnolia-cloud-db ENV DB_PORT=5432 ENV DB_SCHEMA=magnolia ENV DB_USERNAME=postgres ENV DB_PASSWORD=postgres ENV JAVA_OPTS="-Dmagnolia.repositories.home=$magnolia_home \ -Ddb.address=\$DB_ADDRESS \ -Ddb.port=\$DB_PORT \ -Ddb.schema=\$DB_SCHEMA \ -Ddb.username=\$DB_USERNAME \ -Ddb.password=\$DB_PASSWORD \ -Dmagnolia.subscription.customerId=\$LICENSE_ID \ -Dmagnolia.subscription.secretKey=\$LICENSE_SECRET" RUN groupadd $tomcat_group RUN useradd -ms /bin/bash -g $tomcat_group $tomcat_user RUN mkdir $magnolia_home RUN mkdir -p $magnolia_temp RUN mkdir $tomcat_base RUN curl -o /tmp/tomcat.tar.gz https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz RUN tar xzvf /tmp/tomcat.tar.gz -C $tomcat_base --strip-components=1 RUN rm -rf $tomcat_base/webapps/* # Otherwise get ERROR logs during startup RUN mkdir -p $magnolia_home/content-importer # latest context.xml fix COPY config/context.xml $tomcat_base/conf/context.xml COPY dist/*.war $tomcat_base/webapps/ROOT.war RUN unzip -q $tomcat_base/webapps/ROOT.war -d $tomcat_base/webapps/ROOT && rm -f $tomcat_base/webapps/ROOT.war COPY config/ldap.properties $tomcat_base/webapps/ROOT/WEB-INF/config COPY config/now-ldap-mapping.properties $tomcat_base/webapps/ROOT/WEB-INF/classes COPY config/log4j2.xml $tomcat_base/webapps/ROOT/WEB-INF/config/default/log4j2.xml RUN chown -R $tomcat_user:$tomcat_group $tomcat_base RUN chown -R $tomcat_user:$tomcat_group $magnolia_home RUN chown -R $tomcat_user:$tomcat_group $magnolia_temp # Bootstrap configuration to inject receivers # Why we need an intermediate directory? # => The config files are shared from host machine though volume mapping in docker-compose # However, the Cloud module will delete the config files after processed, we don't want to lose them RUN mkdir -p /var/tmp/magnolia/boot/tmp \ && chown -R $tomcat_user:$tomcat_group /var/tmp/magnolia/boot/tmp \ && mkdir -p /var/tmp/magnolia/boot/config \ && chown -R $tomcat_user:$tomcat_group /var/tmp/magnolia/boot/config EXPOSE 8080 CMD cp -R /var/tmp/magnolia/boot/tmp/* /var/tmp/magnolia/boot/config; $tomcat_base/bin/catalina.sh run