blob: 5cd926a985b495e0c1adc359f7e53df5557c8245 [file] [log] [blame]
#!/bin/bash
#
# Copyright 2016-2017 Huawei Technologies Co., Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# $1 dirsrc
# $2 autorelease build
set -e
dirsrc=$1
if [ -z "$2" ]; then
BUILD="snapshots"
else
BUILD=$2
fi
VERSION="1.1.0-SNAPSHOT"
# docker root dir
ROOT=`git rev-parse --show-toplevel`/test/csit/docker
cd $ROOT
dir=$dirsrc/target
mkdir -p $dir
if [ "$BUILD" = "snapshots" ]; then
$ROOT/scripts/gen-dockerfiles.py $dirsrc
else
$ROOT/scripts/gen-dockerfiles.py $dirsrc --build $BUILD
fi
# Update build number in workaround files
for file in `find $dirsrc -name 80-workaround.txt`; do
sed -i "s|autorelease-[0-9]\{4\}|$BUILD|" $file
done
cp $ROOT/../../../distribution/LICENSE $dir
cp -f $dirsrc/*.txt $dir 2>/dev/null || :
if [ -f $dir/20-mysql.txt ]; then
cp $ROOT/templates/init-mysql.sh $dir/init-mysql.sh
else
rm -f $dir/init-mysql.sh
fi
# empty 30-tomcat.txt would be created by gen-dockerfiles.py where required
if [ -f $dir/30-tomcat.txt ]; then
TOMCAT_VERSION=`$ROOT/scripts/get-tomcat-version.sh`
cat > $dir/30-tomcat.txt <<EOF
# 30-tomcat.txt - AUTOGENERATED, DO NOT MODIFY MANUALLY
# Set up tomcat
RUN wget -q http://mirrors.ocf.berkeley.edu/apache/tomcat/tomcat-8/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz && tar --strip-components=1 -xf apache-tomcat-${TOMCAT_VERSION}.tar.gz && rm -f apache-tomcat-${TOMCAT_VERSION}.tar.gz && rm -rf webapps && mkdir -p webapps/ROOT
RUN echo 'export CATALINA_OPTS="\$CATALINA_OPTS -Xms64m -Xmx256m -XX:MaxPermSize=64m"' > /service/bin/setenv.sh
ENV CATALINA_HOME /service
EOF
fi
cat > $dir/docker-entrypoint.sh <<EOF
#!/bin/bash
#
# Copyright 2016-2017 Huawei Technologies Co., Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# This file was auto-generated by gen-all-dockerfiles.sh; do not modify manually.
#
# $dir/docker-entrypoint.sh
#
if [ -z "\$SERVICE_IP" ]; then
export SERVICE_IP=\`hostname -i\`
fi
echo
echo Environment Variables:
echo "SERVICE_IP=\$SERVICE_IP"
EOF
if [ $dirsrc != "common-services-msb" ]; then
cat >> $dir/docker-entrypoint.sh <<EOF
if [ -z "\$MSB_ADDR" ]; then
echo "Missing required variable MSB_ADDR: Microservices Service Bus address <ip>:<port>"
exit 1
fi
echo "MSB_ADDR=\$MSB_ADDR"
echo
# Wait for MSB initialization
echo Wait for MSB initialization
for i in {1..20}; do
curl -sS -m 1 \$MSB_ADDR > /dev/null && break
sleep \$i
done
EOF
fi
cat >> $dir/docker-entrypoint.sh <<EOF
echo
# Configure service based on docker environment variables
./instance-config.sh
EOF
if [ -f $dir/20-mysql.txt ]; then
cat >> $dir/docker-entrypoint.sh <<EOF
# Start mysql
su mysql -c /usr/bin/mysqld_safe &
EOF
fi
if [ -f $dir/25-mongodb.txt ]; then
cat >> $dir/docker-entrypoint.sh <<EOF
# Start mongodb
mongod &
EOF
fi
cat >> $dir/docker-entrypoint.sh <<EOF
# Perform one-time config
if [ ! -e init.log ]; then
# Perform workarounds due to defects in release binary
./instance-workaround.sh
EOF
if [ -f $dir/20-mysql.txt ]; then
cat >> $dir/docker-entrypoint.sh <<EOF
# Init mysql; set root password
./init-mysql.sh
EOF
fi
cat >> $dir/docker-entrypoint.sh <<EOF
# microservice-specific one-time initialization
./instance-init.sh
date > init.log
fi
# Start the microservice
./instance-run.sh
EOF
cat > $dir/Dockerfile <<EOF
#
# This file was auto-generated by gen-all-dockerfiles.sh; do not modify manually.
#
# $dir/Dockerfile
#
EOF
cat $dir/*.txt >> $dir/Dockerfile
for file in instance-config.sh instance-init.sh instance-run.sh instance-workaround.sh; do
if [ ! -f $dirsrc/$file ]; then
cp -n $ROOT/templates/instance-script.sh $dirsrc/$file
fi
done
cp -f $dirsrc/instance-*.sh $dir
touch $dir/instance-config.sh
touch $dir/instance-init.sh
touch $dir/instance-run.sh
touch $dir/instance-workaround.sh
chmod +x $dir/*.sh
cat > $dir/pom.xml <<EOF
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.openo.integration.docker</groupId>
<artifactId>${dirsrc}</artifactId>
<version>${VERSION}</version>
<packaging>docker</packaging>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.19.0</version>
<extensions>true</extensions>
<configuration>
<images>
<image>
<name>openoint/${dirsrc}</name>
<build>
<dockerFileDir>.</dockerFileDir>
<tags>
<tag>latest</tag>
</tags>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</project>
EOF