#!/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