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