Create docker app for deploy http hello server with conf.d, etcd and waiting script

This commit is contained in:
antoine.roux@zenika.com 2019-02-06 22:15:45 +01:00
parent d1b602a8ec
commit af7b0773ec
5 changed files with 105 additions and 0 deletions

View File

@ -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

View File

@ -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"

View File

@ -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."

View File

@ -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

View File

@ -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