Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 03061a87 authored by Joze RIHTARSIC's avatar Joze RIHTARSIC
Browse files

update docker images for pushing to dockerhub

parent ba5df00c
No related branches found
No related tags found
No related merge requests found
version: "3.0"
services:
tomcat-mysql:
image: tomcat_mysql_smp
container_name: tomcat_mysql_smp
image: smp-tomcat-mysql:${SMP_VERSION}
container_name: smp-tomcat-mysql
volumes:
- ./properties/db-scripts:/tmp/custom-database-scripts/ # init script.
ports:
......
......@@ -5,23 +5,36 @@ SML_INIT_DATABASE="../../../smp-webapp/src/main/smp-setup/database-scripts/mysql
SML_INIT_DATABASE_DATA="../../../smp-webapp/src/main/smp-setup/database-scripts/mysql5innodb-data.sql"
# soap ui data
PREFIX="smp-tomcat-mysql"
SMP_VERSION=
echo "Working Directory: ${WORKING_DIR}"
cd "$WORKING_DIR"
# clear volume and containers - to run restart from strach
# READ argumnets
while getopts i: option
while getopts i:v: option
do
case "${option}"
in
i) SML_INIT_DATABASE_DATA=${OPTARG};;
v) SMP_VERSION=${OPTARG};;
esac
done
if [ -z "${SMP_VERSION}" ]
then
# get version from POM file
SMP_VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)"
fi
echo "SMP version: $SMP_VERSION"
echo "Working Directory: ${WORKING_DIR}"
cd "$WORKING_DIR"
# check if property folder exists if not create it
if [ ! -d "./properties/db-scripts/" ]
then
......@@ -36,7 +49,8 @@ cp "${SML_INIT_DATABASE_DATA}" ./properties/db-scripts/mysql5innodb-data.sql
function clearOldContainers {
echo "Clear containers and volumes"
docker-compose -p "${PREFIX}" rm -s -f -v
docker-compose -p "${PREFIX}" rm -s -f -v
echo "Clear containers and volumes"
}
......@@ -44,9 +58,12 @@ function clearOldContainers {
# Always delete shared-status-folder else weblogic will start to quick!
# because statuses are sync over shared-status-folder folders and it could contain status from previous run.
export SMP_VERSION="${SMP_VERSION}"
echo "Clear old containser"
clearOldContainers
# start
docker-compose -p ${PREFIX} up -d --force-recreate
# start "
echo "Start compose"
docker-compose -p ${PREFIX} up -d --force-recreate
# wait until service is up
for i in `seq 100`; do timeout 1 bash -c ' curl --head --silent --fail http://localhost:8981/smp/'; if [ $? -eq 0 ] ; then break;fi; echo "$i. Wait for tomcat to start!"; sleep 5; done;
......
......@@ -14,9 +14,7 @@
# 3. run the scripts with arguments
# build-docker-images.sh -f build-docker-images.sh -f ${oracle_artefact_folder}
DIRNAME=`dirname "$0"`
cd "$DIRNAME"
DIRNAME="$(pwd -P)"
ORACLE_DB_FILE="oracle-xe-11.2.0-1.0.x86_64.rpm.zip"
SERVER_JDK_FILE="server-jre-8u211-linux-x64.tar.gz"
......@@ -27,9 +25,14 @@ ORACLE_ARTEFACTS="/CEF/oracle-install"
SMP_ARTEFACTS="../../smp-webapp/target/"
SMP_ARTEFACTS_CLEAR="false"
SMP_IMAGE_PUBLISH="false"
DOCKER_USER=$bamboo_DOCKER_USER
DOCKER_PASSWORD=$bamboo_DOCKER_PASSWORD
# READ argumnets
while getopts v:o:s:c: option
while getopts v:o:s:c:p: option
do
case "${option}"
in
......@@ -37,19 +40,22 @@ do
o) ORACLE_ARTEFACTS=${OPTARG};;
s) SMP_ARTEFACTS=${OPTARG};;
c) SMP_ARTEFACTS_CLEAR=${OPTARG};;
p) SMP_IMAGE_PUBLISH=${OPTARG};;
esac
done
if [ -z "${SML_VERSION}" ]
if [[ -z "${SML_VERSION}" ]]
then
# get version from setup file
cd "${SMP_ARTEFACTS}"
SMP_VERSION="$(ls smp-*-setup.zip | sed -e 's/.*smp-//g' | sed -e 's/-setup\.zip$//g')"
#cd "${SMP_ARTEFACTS}"
#SMP_VERSION="$(ls smp-*-setup.zip | sed -e 's/.*smp-//g' | sed -e 's/-setup\.zip$//g')"
SMP_VERSION="$(mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)"
# go back to dirname
cd "$DIRNAME"
fi
DIRNAME=`dirname "$0"`
cd "$DIRNAME"
DIRNAME="$(pwd -P)"
echo "*****************************************************************"
echo "* SMP artefact folders: $SMP_ARTEFACTS, (Clear folder after build: $SMP_ARTEFACTS_CLEAR )"
echo "* Build SMP image for version $SMP_VERSION"
......@@ -58,13 +64,14 @@ echo "*****************************************************************"
echo ""
# -----------------------------------------------------------------------------
# validate all necessary artefacts and prepare files to build images
# -----------------------------------------------------------------------------
validateAndPrepareArtefacts() {
# check oracle database
if [ ! -f "${ORACLE_ARTEFACTS}/${ORACLE_DB_FILE}" ]
if [[ ! -f "${ORACLE_ARTEFACTS}/${ORACLE_DB_FILE}" ]]
then
echo "Oracle database artefacts '${ORACLE_ARTEFACTS}/${ORACLE_DB_FILE}' not found."
exit 1;
......@@ -74,7 +81,7 @@ echo ""
fi
# check server JDK
if [ ! -f "${ORACLE_ARTEFACTS}/${SERVER_JDK_FILE}" ]
if [[ ! -f "${ORACLE_ARTEFACTS}/${SERVER_JDK_FILE}" ]]
then
echo "Server JDK artefacts '${ORACLE_ARTEFACTS}/${SERVER_JDK_FILE}' not found."
exit 1;
......@@ -84,7 +91,7 @@ echo ""
fi
# check weblogic
if [ ! -f "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ]
if [[ ! -f "${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}" ]]
then
echo "Weblogic artefacts '${ORACLE_ARTEFACTS}/${WEBLOGIC_122_QUICK_FILE}' not found."
exit 1;
......@@ -94,14 +101,14 @@ echo ""
fi
if [ ! -d "./tomcat-mysql/artefacts/" ]
if [[ ! -d "./tomcat-mysql/artefacts/" ]]
then
mkdir -p "./tomcat-mysql/artefacts/"
fi
# SMP artefats
if [ ! -f "${SMP_ARTEFACTS}/smp.war" ]
if [[ ! -f "${SMP_ARTEFACTS}/smp.war" ]]
then
echo "SMP artefact '${SMP_ARTEFACTS}/smp.war' not found. Was project built!"
exit 1;
......@@ -114,7 +121,7 @@ echo ""
fi
# SMP setup zip
if [ ! -f "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ]
if [[ ! -f "${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip" ]]
then
echo "SMP setup boundle '${SMP_ARTEFACTS}/smp-${SMP_VERSION}-setup.zip' not found. Was project built!"
exit 1;
......@@ -138,7 +145,7 @@ echo ""
# build docker image for oracle database
# -----------------------------------------------------------------------------
# oracle 1.2.0.2-xe (https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2)
docker build -f ./oracle/oracle-db-11.2.0.2/Dockerfile.xe -t oracle/database:11.2.0.2-xe ./oracle/oracle-db-11.2.0.2/
docker build -f ./oracle/oracle-db-11.2.0.2/Dockerfile.xe -t "smp-oradb-11.2.0.2-xe:${SMP_VERSION}" ./oracle/oracle-db-11.2.0.2/
# -----------------------------------------------------------------------------
# build docker image for oracle database
......@@ -156,13 +163,38 @@ echo ""
# build SMP deployment.
docker build -t weblogic_smp ./weblogic-12.2.1.3-smp/ --build-arg SMP_VERSION="$SMP_VERSION"
docker build -t "smp-weblogic-122:${SMP_VERSION}" ./weblogic-12.2.1.3-smp/ --build-arg SMP_VERSION="$SMP_VERSION"
# build tomcat mysql image deployment.
docker build -t tomcat_mysql_smp ./tomcat-mysql/
docker build -t "smp-tomcat-mysql:${SMP_VERSION}" ./tomcat-mysql/ --build-arg SMP_VERSION=${SMP_VERSION}
}
function pushImageToDockerhub {
if [[ "V$SMP_IMAGE_PUBLISH" == "Vtrue" ]]
then
# login to docker
docker login --username="${DOCKER_USER}" --password="${DOCKER_PASSWORD}"
# push images
pushImageIfExisting "smp-tomcat-mysql:${SMP_VERSION}"
pushImageIfExisting "smp-weblogic-122:${SMP_VERSION}"
pushImageIfExisting "smp-oradb-11.2.0.2-xe:${SMP_VERSION}"
fi
}
function pushImageIfExisting {
if [[ "x$(docker images -q "${1}")" != "x" ]]; then
echo "Pushing image ${1}"
docker tag "${1}" "${DOCKER_USER}"/"${1}"
docker push "${DOCKER_USER}"/"${1}"
else
echo "Could not find image ${1} to push!"
fi
return 0
}
# -----------------------------------------------------------------------------
# clean
# -----------------------------------------------------------------------------
......@@ -176,7 +208,7 @@ echo ""
# clear also the tomcat/mysql image
rm -rf "./tomcat-mysql/artefacts/*.*"
if [ "V$SMP_ARTEFACTS_CLEAR" == "Vtrue" ]
if [[ "V$SMP_ARTEFACTS_CLEAR" == "Vtrue" ]]
then
rm -rf "${SMP_ARTEFACTS}/smp-setup.zip"
rm -rf "${SMP_ARTEFACTS}/smp.war"
......@@ -187,5 +219,6 @@ echo ""
validateAndPrepareArtefacts
buildImages
pushImageToDockerhub
cleanArtefacts
FROM ubuntu:18.04
MAINTAINER Joze Rihtarsic
ARG SMP_VERSION
# Set the SMP_VERSION env variable \
ENV SMP_HOME=/opt/smp \
MYSQL_DRV_VERSION=5.1.46 \
......@@ -14,6 +14,14 @@ ENV SMP_HOME=/opt/smp \
DB_USER_PASSWORD=smp \
MYSQL_ROOT_PASSWORD=root
EXPOSE 3306 8080
ENV LANG en_US.utf8
ADD ./artefacts /tmp/artefacts
COPY ./entrypoint.sh /sbin/entrypoint.sh
VOLUME ["/data"]
# install utils, java, mysql \
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
......@@ -41,29 +49,15 @@ RUN apt-get update \
&& sed -i -e "s/<\/Context>/<Resource name=\"jdbc\/eDeliverySmpDs\" auth=\"Container\" type=\"javax.sql.DataSource\" maxTotal=\"100\" maxIdle=\"30\" maxWaitMillis=\"10000\" username=\"$DB_USER\" password=\"$DB_USER\" driverClassName=\"com.mysql.jdbc.Driver\" url=\"jdbc:mysql:\/\/localhost:3306\/$DB_SCHEMA?useSSL=false\&amp;characterEncoding=UTF-8\&amp;useUnicode=true\"\/><\/Context>/g" "$SMP_HOME/apache-tomcat-$TOMCAT_VERSION/conf/context.xml" \
&& sed -i -e "s/<Connector /<Connector URIEncoding=\"UTF-8\" /g" "$SMP_HOME/apache-tomcat-$TOMCAT_VERSION/conf/server.xml" \
&& echo "datasource.jndi=java:comp/env/jdbc/eDeliverySmpDs" > $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \
&& echo "\nAdd init parameters" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \
&& echo "\nauthentication.blueCoat.enabled=true" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties
&& echo "\nAdd init parameters" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \
&& echo "\nauthentication.blueCoat.enabled=true" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \
&& unzip /tmp/artefacts/smp-setup.zip -d /tmp/ \
&& mv /tmp/smp-$SMP_VERSION/* /tmp/artefacts/ \
&& rm -rf /tmp/smp-$SMP_VERSION \
&& mv /tmp/artefacts/smp.war $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/webapps/ \
&& chmod u+x /sbin/entrypoint.sh \
&& sed -i -e "s/127.0.0.1/0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf
RUN curl -o /tmp/org.jacoco.agent.jar https://repo1.maven.org/maven2/org/jacoco/org.jacoco.agent/0.8.4/org.jacoco.agent-0.8.4-runtime.jar
# copy application to image
ADD ./artefacts /tmp/artefacts
# install SMP
RUN unzip /tmp/artefacts/smp-setup.zip -d /tmp/ \
&& mv /tmp/artefacts/smp.war $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/webapps/
ENV LANG en_US.utf8
VOLUME ["/data"]
COPY ./entrypoint.sh /sbin/entrypoint.sh
RUN chmod u+x /sbin/entrypoint.sh \
&& sed -i -e "s/127.0.0.1/0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf
EXPOSE 3306 8080
ENTRYPOINT ["/sbin/entrypoint.sh"]
......@@ -71,7 +71,7 @@ init_mysql() {
echo '[INFO] start MySQL'
service mysql start
if [ -d ${MYSQL_DATA_DIR}/${DB_SCHEMA} ]; then
if [[ -d ${MYSQL_DATA_DIR}/${DB_SCHEMA} ]]; then
echo '[INFO] MySQL ${DB_SCHEMA} already present, skipping creation'
else
echo "[INFO] MySQL ${DB_SCHEMA} not found, creating initial DBs"
......@@ -79,22 +79,22 @@ init_mysql() {
echo 'Create smp database'
mysql -h localhost -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';drop schema if exists $DB_SCHEMA;DROP USER IF EXISTS $DB_USER; create schema $DB_SCHEMA;alter database $DB_SCHEMA charset=utf8; create user $DB_USER identified by '$DB_USER_PASSWORD';grant all on $DB_SCHEMA.* to $DB_USER;"
if [ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]
if [[ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]]
then
echo "Use custom database script! "
mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "tmp/custom-database-scripts/mysql5innodb.ddl"
else
echo "Use default database ddl script!"
mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/smp-4.1.1-SNAPSHOT/database-scripts/mysql5innodb.ddl" fi
echo "Use default database ddl script! test"
mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/artefacts/database-scripts/mysql5innodb.ddl"
fi
if [ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]
if [[ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ]]
then
echo "Use custom init script! "
mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/custom-database-scripts/mysql5innodb-data.sql"
else
echo "Use default init script!"
mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/smp-4.1.1-SNAPSHOT/database-scripts/mysql5innodb-data.sql"
mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SCHEMA < "/tmp/artefacts/database-scripts/mysql5innodb-data.sql"
fi
fi
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment