From af7b0773ec51103077e7f9e9ceccce2bb2b7d85f Mon Sep 17 00:00:00 2001 From: "antoine.roux@zenika.com" Date: Wed, 6 Feb 2019 22:15:45 +0100 Subject: [PATCH] Create docker app for deploy http hello server with conf.d, etcd and waiting script --- test.dockerapp/docker-compose.yml | 30 ++++++++++++++++++++++ test.dockerapp/http-echo-confd/Dockerfile | 26 +++++++++++++++++++ test.dockerapp/http-echo-confd/etcdWait.sh | 24 +++++++++++++++++ test.dockerapp/metadata.yml | 12 +++++++++ test.dockerapp/parameters.yml | 13 ++++++++++ 5 files changed, 105 insertions(+) create mode 100644 test.dockerapp/docker-compose.yml create mode 100644 test.dockerapp/http-echo-confd/Dockerfile create mode 100644 test.dockerapp/http-echo-confd/etcdWait.sh create mode 100644 test.dockerapp/metadata.yml create mode 100644 test.dockerapp/parameters.yml diff --git a/test.dockerapp/docker-compose.yml b/test.dockerapp/docker-compose.yml new file mode 100644 index 0000000..96d8b45 --- /dev/null +++ b/test.dockerapp/docker-compose.yml @@ -0,0 +1,30 @@ +version: "3.6" +services: + hello: + build: + context: ./test.dockerapp/http-echo-confd/ + dockerfile: Dockerfile + args: + httpEchoServerVersion: ${image-version} + alpineVersion: ${alpine-version} + environment: + HTTPTEXT: ${response-text} + # etcdWait parameter + PLATFORM: ${etcdWait-platform} + MAX_RETRY: ${etcdWait-max-retry} + SLEEP_TIME: ${etcdWait-sleep-time} + ports: + - ${echo-port}:5678 + + etcd: + image: bitnami/etcd + environment: + - ALLOW_NONE_AUTHENTICATION=yes + # - ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 + restart: always + ports: + - "2379:2379/tcp" + +volumes: + data-volume: + driver: local diff --git a/test.dockerapp/http-echo-confd/Dockerfile b/test.dockerapp/http-echo-confd/Dockerfile new file mode 100644 index 0000000..2b1b991 --- /dev/null +++ b/test.dockerapp/http-echo-confd/Dockerfile @@ -0,0 +1,26 @@ +ARG httpEchoServerVersion="latest" +ARG alpineVersion=3.7 +FROM hashicorp/http-echo:${httpEchoServerVersion} as echo + +EXPOSE 2379 + +FROM golang:alpine${alpineVersion} + +ENV HTTPTEXT=${HTTPTEXT:-"Hello word"} +ENV ETCDCTL_API=${etcdApiVersion:-3} +ENV ETCD_VERSION=${etcdVersion:-3.3.11} + +COPY --from=echo /http-echo /usr/local/bin/http-echo +ADD ./etcdWait.sh /usr/bin/etcdWait + +ARG etcdFolder=etcd-v$ETCD_VERSION-linux-amd64 + +RUN apk add --no-cache wget && \ + wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-darwin-amd64 -o /usr/local/bin/confd && \ + wget https://github.com/coreos/etcd/releases/download/v$ETCD_VERSION/${etcdFolder}.tar.gz && \ + tar -zxvf ${etcdFolder}.tar.gz && \ + mv $(pwd)/${etcdFolder}/etcdctl /usr/local/bin/etcdctl && \ + chmod +x /usr/bin/etcdWait + +# confd -onetime -backend etcd && cat /tmp/myScript.conf && +CMD etcdWait && http-echo -text="$HTTPTEXT" diff --git a/test.dockerapp/http-echo-confd/etcdWait.sh b/test.dockerapp/http-echo-confd/etcdWait.sh new file mode 100644 index 0000000..9a15c5e --- /dev/null +++ b/test.dockerapp/http-echo-confd/etcdWait.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +PLATFORM=${PLATFORM:-"vm"} +SLEEP_TIME=${SLEEP_TIME:-"5"} +MAX_RETRY=${MAX_RETRY:-"10"} +RETRY=1 + +# check loaded status +# @param $1 : platform's key +check_status() +{ + ETCD_READY=$(etcdctl --endpoints http://etcd:2379 get /${1}/etcd/loaded) +} + +# ETCDCTL_API=3 should be defined as a global variable +check_status ${PLATFORM} +while [[ -z "${ETCD_READY}" && ${RETRY} -le ${MAX_RETRY} ]]; do + echo "Waiting for ECTD init ... (try number ${RETRY})"; + check_status ${PLATFORM} + sleep ${SLEEP_TIME}; + + RETRY=$(expr ${RETRY} + 1) +done +echo "ECTD init ready." \ No newline at end of file diff --git a/test.dockerapp/metadata.yml b/test.dockerapp/metadata.yml new file mode 100644 index 0000000..aefb625 --- /dev/null +++ b/test.dockerapp/metadata.yml @@ -0,0 +1,12 @@ +# Version of the application +version: 0.1.0 +# Name of the application +name: test +# A short description of the application +description: +# Namespace to use when pushing to a registry. This is typically your Hub username. +namespace: antoine +# List of application maintainers with name and email for each +maintainers: + - name: test + email: antoine.roux@zenika.com diff --git a/test.dockerapp/parameters.yml b/test.dockerapp/parameters.yml new file mode 100644 index 0000000..27f39dc --- /dev/null +++ b/test.dockerapp/parameters.yml @@ -0,0 +1,13 @@ +echo-port: 5678 +etcd-port: 2379 + +etcdWait-platform: dev +etcdWait-max-retry: 100 +etcdWait-sleep-time: 2 + +response-text: Hello world custom + +etcdApiVersion: 3.3 +etcd-version: 3.3.11 +image-version: latest +alpine-version: 3.7 \ No newline at end of file