Change path for all Dockerfile

parent 76b95752
......@@ -89,6 +89,7 @@ services:
- TZ=${WORKSPACE_TIMEZONE}
- BLACKFIRE_CLIENT_ID=${BLACKFIRE_CLIENT_ID}
- BLACKFIRE_CLIENT_TOKEN=${BLACKFIRE_CLIENT_TOKEN}
- DRUSH_VERSION=${DRUSH_VERSION}
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
extra_hosts:
......
FROM adminer:4.3.0
# Version 4.3.1 contains PostgreSQL login errors. See docs.
# See https://sourceforge.net/p/adminer/bugs-and-features/548/
LABEL maintainer="Patrick Artounian <partounian@gmail.com>"
# Add volume for sessions to allow session persistence
VOLUME /sessions
#####################################
# SQL SERVER:
#####################################
USER root
ARG INSTALL_MSSQL=false
ENV INSTALL_MSSQL ${INSTALL_MSSQL}
RUN if [ ${INSTALL_MSSQL} = true ]; then \
set -xe \
&& apk --update add --no-cache --virtual .phpize-deps $PHPIZE_DEPS unixodbc unixodbc-dev \
&& pecl channel-update pecl.php.net \
&& pecl install pdo_sqlsrv-4.1.8preview sqlsrv-4.1.8preview \
&& echo "extension=sqlsrv.so" > /usr/local/etc/php/conf.d/20-sqlsrv.ini \
&& echo "extension=pdo_sqlsrv.so" > /usr/local/etc/php/conf.d/20-pdo_sqlsrv.ini \
;fi
USER adminer
# We expose Adminer on port 8080 (Adminer's default)
EXPOSE 8080
FROM aerospike:latest
LABEL maintainer="Luciano Jr <luciano@lucianojr.com.br>"
RUN rm /etc/aerospike/aerospike.conf
COPY aerospike.conf /etc/aerospike/aerospike.conf
# Aerospike database configuration file.
# This stanza must come first.
service {
user root
group root
paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1.
pidfile /var/run/aerospike/asd.pid
service-threads 4
transaction-queues 4
transaction-threads-per-queue 4
proto-fd-max 15000
}
logging {
# Log file must be an absolute path.
file /var/log/aerospike/aerospike.log {
context any info
}
# Send log messages to stdout
console {
context any critical
}
}
network {
service {
address any
port 3000
# Uncomment the following to set the `access-address` parameter to the
# IP address of the Docker host. This will the allow the server to correctly
# publish the address which applications and other nodes in the cluster to
# use when addressing this node.
# access-address <IPADDR>
}
heartbeat {
# mesh is used for environments that do not support multicast
mode mesh
port 3002
# use asinfo -v 'tip:host=<ADDR>;port=3002' to inform cluster of
# other mesh nodes
mesh-port 3002
interval 150
timeout 10
}
fabric {
port 3001
}
info {
port 3003
}
}
namespace test {
replication-factor 2
memory-size 1G
default-ttl 5d # 5 days, use 0 to never expire/evict.
# storage-engine memory
# To use file storage backing, comment out the line above and use the
# following lines instead.
storage-engine device {
file /opt/aerospike/data/test.dat
filesize 4G
data-in-memory true # Store data in memory in addition to file.
}
}
FROM webdevops/apache:ubuntu-16.04
LABEL maintainer="Eric Pfeiffer <computerfr33k@users.noreply.github.com>"
ARG PHP_UPSTREAM_CONTAINER=php-fpm
ARG PHP_UPSTREAM_PORT=9000
ARG PHP_UPSTREAM_TIMEOUT=60
ARG DOCUMENT_ROOT=/var/www/
ENV WEB_PHP_SOCKET=${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}
ENV WEB_DOCUMENT_ROOT=${DOCUMENT_ROOT}
ENV WEB_PHP_TIMEOUT=${PHP_UPSTREAM_TIMEOUT}
EXPOSE 80 443
WORKDIR /var/www/
COPY vhost.conf /etc/apache2/sites-enabled/vhost.conf
ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"]
CMD ["supervisord"]
*.conf
!default.conf
!default.apache.conf
<VirtualHost *:80>
ServerName laradock.test
DocumentRoot /var/www/
Options Indexes FollowSymLinks
<Directory "/var/www/">
AllowOverride All
<IfVersion < 2.4>
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName sample.test
DocumentRoot /var/www/sample/public/
Options Indexes FollowSymLinks
<Directory "/var/www/sample/public/">
AllowOverride All
<IfVersion < 2.4>
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
</VirtualHost>
Include /etc/apache2/sites-available/*.conf
FROM python:slim
LABEL maintainer="melchabcede@gmail.com"
RUN pip install --upgrade --no-cache-dir awsebcli
RUN apt-get -yqq update && apt-get -yqq install git-all
#NOTE: make sure ssh keys are added to ssh_keys folder
RUN mkdir root/tmp_ssh
COPY /ssh_keys/. /root/.ssh/
RUN cd /root/.ssh && chmod 600 * && chmod 644 *.pub
# Set default work directory
WORKDIR /var/www
FROM php:latest
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
RUN apt-get update && apt-get install -y curl
RUN curl -sL https://github.com/ptrofimov/beanstalk_console/archive/master.tar.gz | tar xvz -C /tmp
RUN mv /tmp/beanstalk_console-master /source
RUN apt-get remove --purge -y curl && \
apt-get autoclean && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
EXPOSE 2080
CMD bash -c 'BEANSTALK_SERVERS=$BEANSTALKD_PORT_11300_TCP_ADDR:11300 php -S 0.0.0.0:2080 -t /source/public'
FROM phusion/baseimage:latest
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
ENV DEBIAN_FRONTEND noninteractive
ENV PATH /usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN apt-get update
RUN apt-get install -y beanstalkd
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
VOLUME /var/lib/beanstalkd/data
EXPOSE 11300
CMD ["/usr/bin/beanstalkd"]
# Docs: https://caddyserver.com/docs/caddyfile
0.0.0.0:80 {
root /var/www/public
fastcgi / php-fpm:9000 php {
index index.php
}
# To handle .html extensions with laravel change ext to
# ext / .html
rewrite {
to {path} {path}/ /index.php?{query}
}
gzip
browse
log /var/log/caddy/access.log
errors /var/log/caddy/error.log
# Uncomment to enable TLS (HTTPS)
# Change the first list to listen on port 443 when enabling TLS
#tls self_signed
# To use Lets encrpt tls with a DNS provider uncomment these
# lines and change the provider as required
#tls {
# dns cloudflare
#}
}
laradock1.demo:80 {
root /var/www/public
# Create a Webhook in git.
#git {
#repo https://github.com/xxx/xxx
# path /home/xxx
# #interval 60
# hook webhook laradock
# hook_type generic
#}
}
laradock2.demo:80 {
# Create a Proxy and cors.
#proxy domain.com
#cors
}
FROM zuohuadong/caddy:alpine
LABEL maintainer="Huadong Zuo <admin@zuohuadong.cn>"
ARG plugins="cors"
## ARG plugins="cors cgi cloudflare azure linode"
RUN caddyplug install ${plugins}
EXPOSE 80 443 2015
WORKDIR /var/www/public
CMD ["/usr/bin/caddy", "-conf", "/etc/Caddyfile"]
FROM phusion/baseimage:latest
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
COPY run-certbot.sh /root/certbot/run-certbot.sh
RUN apt-get update
RUN apt-get install -y letsencrypt
ENTRYPOINT bash -c "bash /root/certbot/run-certbot.sh && sleep infinity"
#!/bin/bash
letsencrypt certonly --webroot -w /var/www/letsencrypt -d "$CN" --agree-tos --email "$EMAIL" --non-interactive --text
cp /etc/letsencrypt/archive/"$CN"/cert1.pem /var/certs/cert1.pem
cp /etc/letsencrypt/archive/"$CN"/privkey1.pem /var/certs/privkey1.pem
rootfs/etc/consul-template/conf-services.d/.gitkeep
rootfs/etc/cont-consul/services.d/.gitkeep
rootfs/etc/cont-consul/checks.d/.gitkeep
FROM dockerframework/core-base:latest
# ================================================================================================
# Inspiration: Docker Alpine (https://github.com/bhuisgen/docker-alpine)
# Boris HUISGEN <bhuisgen@hbis.fr>
# ================================================================================================
# Core Contributors:
# - Mahmoud Zalt @mahmoudz
# - Bo-Yi Wu @appleboy
# - Philippe Trépanier @philtrep
# - Mike Erickson @mikeerickson
# - Dwi Fahni Denni @zeroc0d3
# - Thor Erik @thorerik
# - Winfried van Loon @winfried-van-loon
# - TJ Miller @sixlive
# - Yu-Lung Shao (Allen) @bestlong
# - Milan Urukalo @urukalo
# - Vince Chu @vwchu
# - Huadong Zuo @zuohuadong
# ================================================================================================
MAINTAINER "Laradock Team <mahmoud@zalt.me>"
ENV CONSULTEMPLATE_VERSION=0.19.4
RUN mkdir -p /var/lib/consul && \
addgroup -g 500 -S consul && \
adduser -u 500 -S -D -g "" -G consul -s /sbin/nologin -h /var/lib/consul consul && \
chown -R consul:consul /var/lib/consul
RUN apk add --update zip && \
curl -sSL https://releases.hashicorp.com/consul-template/${CONSULTEMPLATE_VERSION}/consul-template_${CONSULTEMPLATE_VERSION}_linux_amd64.zip -o /tmp/consul-template.zip && \
unzip /tmp/consul-template.zip -d /bin && \
rm /tmp/consul-template.zip && \
apk del zip && \
rm -rf /var/cache/apk/*
COPY rootfs/ /
HEALTHCHECK CMD /etc/cont-consul/check || exit 1
MIT License
Copyright (c) 2018 Docker Framework
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
IMAGE = dockerframework/core-base-consul
clean-local:
docker rmi $(CLEAN_OPTIONS) $(IMAGE):$(TAG) || true
build:
docker build $(BUILD_OPTIONS) -t $(IMAGE):$(TAG) .
pull:
docker pull $(PULL_OPTIONS) $(IMAGE):$(TAG)
push: build
docker push $(PUSH_OPTIONS) $(IMAGE):$(TAG)
This diff is collapsed.
# Core-Base-Consul Container
Core-Base-Consul Container of Docker Framework
[![Build Status](https://travis-ci.org/dockerframework/core-base-consul.svg?branch=master)](https://travis-ci.org/dockerframework/core-base-consul) [![](https://images.microbadger.com/badges/image/dockerframework/core-base-consul:latest.svg)](https://microbadger.com/images/dockerframework/core-base-consul:latest "Layers") [![](https://images.microbadger.com/badges/version/dockerframework/core-base-consul:latest.svg)](https://microbadger.com/images/dockerframework/core-base-consul:latest "Version") [![GitHub issues](https://img.shields.io/github/issues/dockerframework/core-base-consul.svg)](https://github.com/dockerframework/core-base-consul/issues) [![GitHub forks](https://img.shields.io/github/forks/dockerframework/core-base-consul.svg)](https://github.com/dockerframework/core-base-consul/network) [![GitHub stars](https://img.shields.io/github/stars/dockerframework/core-base-consul.svg)](https://github.com/dockerframework/core-base-consul/stargazers) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/dockerframework/core-base-consul/master/LICENSE)
version: '3.2'
services:
#================================================================================================
# CORE-BASE-CONSUL
#================================================================================================
core-base-consul:
ports:
- "1234:1234"
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
#- CONTAINER_RESOLVER=route # IP resolver method for container (route/interface, default: route)
#- CONTAINER_RESOLVER_INTERFACENAME=eth0 # network interface name for IP resolver (default: eth0)
#- CONTAINER_RESOLVER_INTERFACETYPE=inet # network interface type for IP resolver (inet/inet6, default: inet)
- CONSUL_AGENT=172.16.0.1 # agent hostname
- CONSUL_PORT=8500 # agent port
- CONSUL_TLS=0 # enable TLS
#- CONSUL_TLSCAFILE=/etc/consul.d/ssl/ca.pem # TLS CA certificate file
#- CONSUL_TLSCERTFILE=/etc/consul.d/ssl/client.pem # TLS client certificate file
#- CONSUL_TLSKEYFILE=/etc/consul.d/ssl/client-priv-key.pem # TLS client certificate key file
#- CONSUL_TLSSERVERNAME= # SNI server name for validation
#- CONSUL_TLSVERIFY=0 # enable TLS peer verification
#- CONSUL_TOKEN=43480d61-aea9-4a21-9deb-5e68dbc44985 # API token
#- CONSUL_KEYPREFIX=path/prefix/ # keystore prefix path
#- CONSUL_RESOLVER=container # IP resolver method for consul service registration (container/route/interface, by default container)
#- CONSUL_RESOLVER_INTERFACENAME=eth0 # network interface name for IP resolver (default: eth0)
#- CONSUL_RESOLVER_INTERFACETYPE=inet # network interface type for IP resolver (inet/inet6, default: inet)
- CONSUL_SERVICENAME=foo # service name to register
#- CONSUL_SERVICETAGS=local,foo # service tags (optional)
- CONSUL_SERVICEPORT=1234 # service port
#- CONSUL_CHECKTYPE=tcp # health check type (none/http/script/tcp/ttl, default: none)
#- CONSUL_CHECKINTERVAL=15s # health check interval
#- CONSUL_DEREGISTERCRITICALSERVICEAFTER=0 # delay after which the service will be deregistered if this check remains critical (0 to disable)
#
# HTTP health check
#
#- CONSUL_CHECKTYPE=http
#- CONSUL_CHECKHTTPURL=http://foo:1234 # HTTP custom URL
#- CONSUL_CHECKHTTPPATH=/ # HTTP path for auto-generated URL (http://<container_ip>:<service_port><path>)
#- CONSUL_CHECKHTTPTLSSKIPVERIFY=0 # skip TLS certificate verification
#- CONSUL_CHECKINTERVAL=15s # check interval
#- CONSUL_DEREGISTERCRITICALSERVICEAFTER=0 # delay after which the service will be deregistered if this check remains critical (0 to disable)
#
# Script health check
#
#- CONSUL_CHECKTYPE=script
#- CONSUL_CHECKSCRIPT=/usr/local/bin/healthcheck.sh # script to execute
#- CONSUL_CHECKDOCKERCONTAINERID= # docker container id
#- CONSUL_CHECKSHELL=/bin/bash # custom shell
#- CONSUL_CHECKINTERVAL=15s # check interval
#- CONSUL_DEREGISTERCRITICALSERVICEAFTER=0 # delay after which the service will be deregistered if this check remains critical (0 to disable)
#
# TCP health check
#
#- CONSUL_CHECKTYPE=tcp
#- CONSUL_CHECKADDR=static # custom TCP address if different from service registration
#- CONSUL_CHECKPORT=5678 # custom TCP port if different from service registration
#- CONSUL_CHECKINTERVAL=15s # check interval
#- CONSUL_DEREGISTERCRITICALSERVICEAFTER=0 # delay after which the service will be deregistered if this check remains critical (0 to disable)
#
# TTL health check
#
#- CONSUL_CHECKTYPE=ttl
#- CONSUL_CHECKTTL=15s # TTL update
#- CONSUL_DEREGISTERCRITICALSERVICEAFTER=0 # delay after which the service will be deregistered if this check remains critical (0 to disable)
template {
source = "/etc/consul-template/templates/cont-consul/service.json.ctmpl"
destination = "/etc/cont-consul/services.d/container.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/cont-consul/check-http.json.ctmpl"
destination = "/etc/cont-consul/checks.d/container-http.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/cont-consul/check-script.json.ctmpl"
destination = "/etc/cont-consul/checks.d/container-script.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/cont-consul/check-tcp.json.ctmpl"
destination = "/etc/cont-consul/checks.d/container-tcp.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/cont-consul/check-ttl.json.ctmpl"
destination = "/etc/cont-consul/checks.d/container-ttl.json"
perms = 0640
}
{{- $host := env "CONTAINER_HOST" -}}
{{- $ip := env "CONTAINER_IP" -}}
{{- $name := env "CONSUL_SERVICENAME" -}}
{{- $port := env "CONSUL_SERVICEPORT" -}}
{{- $check_type := env "CONSUL_CHECKTYPE" -}}
{{- $check_httpurl := env "CONSUL_CHECKHTTPURL" -}}
{{- $check_httppath := env "CONSUL_CHECKHTTPPATH" -}}
{{- $check_httptlsskipverify := env "CONSUL_CHECKHTTPTLSSKIPVERIFY" -}}
{{- $check_interval := env "CONSUL_CHECKINTERVAL" -}}
{{- $check_deregistercriticalserviceafter := env "CONSUL_DEREGISTERCRITICALSERVICEAFTER" -}}
{{- if eq $check_type "http" -}}
{{- if and $host $ip $name $port -}}
{
"ID": "{{print $name "-" $host "-http"}}",
"Name": "Check HTTP",
"ServiceID": "{{print $name "-" $host}}",
{{if $check_deregistercriticalserviceafter}}
"DeregisterCriticalServiceAfter": "{{$check_deregistercriticalserviceafter}}",
{{end}}
{{if $check_httpurl}}
"HTTP": "{{$check_httpurl}}",
{{else}}
"HTTP": "http://{{$ip}}:{{$port}}{{if $check_httppath}}{{$check_httppath}}{{else}}/{{end}}",
{{end}}
{{if eq $check_httptlsskipverify "1"}}
"TLSSkipVerify": true,
{{end}}
"Interval": {{if $check_interval}}{{$check_interval}}{{else}}"15s"{{end}}
}
{{- end -}}
{{- end -}}
{{- $host := env "CONTAINER_HOST" -}}
{{- $ip := env "CONTAINER_IP" -}}
{{- $name := env "CONSUL_SERVICENAME" -}}
{{- $check_type := env "CONSUL_CHECKTYPE" -}}
{{- $check_script := env "CONSUL_CHECKSCRIPT" -}}
{{- $check_docker_container_id := env "CONSUL_CHECKDOCKERCONTAINERID" -}}
{{- $check_shell := env "CONSUL_CHECKSHELL" -}}
{{- $check_interval := env "CONSUL_CHECKINTERVAL" -}}
{{- $check_deregistercriticalserviceafter := env "CONSUL_DEREGISTERCRITICALSERVICEAFTER" -}}
{{- if eq $check_type "script" -}}
{{- if and $host $ip $name $check_script -}}
{
"ID": "{{print $name "-" $host "-script"}}",
"Name": "Check script",
"ServiceID": "{{print $name "-" $host}}",
{{if $check_deregistercriticalserviceafter}}
"DeregisterCriticalServiceAfter": "{{$check_deregistercriticalserviceafter}}",
{{end}}
"Script": "{{$check_script}}",
{{if and $check_docker_container_id $check_shell -}}
"DockerContainerID": "{{$check_docker_container_id}}",
"Shell": "{{$check_shell}}",
{{end -}}
"Interval": {{if $check_interval}}{{$check_interval}}{{else}}"15s"{{end}}
}
{{- end -}}
{{- end -}}
{{- $host := env "CONTAINER_HOST" -}}
{{- $ip := env "CONTAINER_IP" -}}
{{- $name := env "CONSUL_SERVICENAME" -}}
{{- $port := env "CONSUL_SERVICEPORT" -}}
{{- $check_type := env "CONSUL_CHECKTYPE" -}}
{{- $check_addr := env "CONSUL_CHECKADDR" -}}
{{- $check_port := env "CONSUL_CHECKPORT" -}}
{{- $check_interval := env "CONSUL_CHECKINTERVAL" -}}
{{- $check_deregistercriticalserviceafter := env "CONSUL_DEREGISTERCRITICALSERVICEAFTER" -}}
{{- if eq $check_type "tcp" -}}
{{- if and $host $ip $name $port $check_addr $check_port -}}
{
"ID": "{{print $name "-" $host "-tcp"}}",
"Name": "Check TCP",
"ServiceID": "{{print $name "-" $host}}",
{{if $check_deregistercriticalserviceafter}}
"DeregisterCriticalServiceAfter": "{{$check_deregistercriticalserviceafter}}",
{{end}}
"TCP": "{{$check_addr}}:{{$check_port}}",
"Interval": {{if $check_interval}}{{$check_interval}}{{else}}"15s"{{end}}
}
{{- else -}}
{{- if and $host $ip $name $port -}}
{
"ID": "{{print $name "-" $host "-tcp"}}",
"Name": "Check TCP",
"ServiceID": "{{print $name "-" $host}}",
{{if $check_deregistercriticalserviceafter}}
"DeregisterCriticalServiceAfter": "{{$check_deregistercriticalserviceafter}}",
{{end}}
"TCP": "{{$ip}}:{{$port}}",
"Interval": {{if $check_interval}}{{$check_interval}}{{else}}"15s"{{end}}
}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $host := env "CONTAINER_HOST" -}}
{{- $ip := env "CONTAINER_IP" -}}
{{- $name := env "CONSUL_SERVICENAME" -}}
{{- $check_type := env "CONSUL_CHECKTYPE" -}}
{{- $check_ttl := env "CONSUL_CHECKTTL" -}}
{{- $check_deregistercriticalserviceafter := env "CONSUL_DEREGISTERCRITICALSERVICEAFTER" -}}
{{- if eq $check_type "ttl" -}}
{{- if and $host $ip $name $check_ttl -}}
{
"ID": "{{print $name "-" $host "-ttl"}}",
"Name": "Check TTL",
"ServiceID": "{{print $name "-" $host}}",
{{if $check_deregistercriticalserviceafter}}
"DeregisterCriticalServiceAfter": "{{$check_deregistercriticalserviceafter}}",
{{end}}
"TTL": "{{$check_ttl}}"
}
{{- end -}}
{{- end -}}
{{- $host := env "CONTAINER_HOST" -}}
{{- $ip := env "CONTAINER_IP" -}}
{{- $name := env "CONSUL_SERVICENAME" -}}
{{- $tags := env "CONSUL_SERVICETAGS" -}}
{{- $addr := env "CONSUL_SERVICEADDR" -}}
{{- $port := env "CONSUL_SERVICEPORT" -}}
{{- if and $host $ip $name $addr $port -}}
{
"ID": "{{print $name "-" $host}}",
"Name": "{{$name}}",
{{if $tags -}}
"Tags": [ {{range $index, $tag := $tags | split ","}}{{if gt $index 0}}, {{end}}"{{$tag}}"{{end}} ],
{{- end}}
"Address": "{{$addr}}",
"Port": {{$port}}
}
{{- end -}}
-----BEGIN CERTIFICATE-----
MIID6zCCAtOgAwIBAgIJAKMb63RFQYl1MA0GCSqGSIb3DQEBCwUAMIGLMQswCQYD
VQQGEwJMVTETMBEGA1UECAwKTHV4ZW1ib3VyZzETMBEGA1UEBwwKTHV4ZW1ib3Vy
ZzESMBAGA1UECgwJbG9jYWxob3N0MRIwEAYDVQQLDAlsb2NhbGhvc3QxCzAJBgNV
BAMMAmNhMR0wGwYJKoZIhvcNAQkBFg5yb290QGxvY2FsaG9zdDAeFw0xNjA1MjQx
NTI3NDNaFw0yNjA1MjIxNTI3NDNaMIGLMQswCQYDVQQGEwJMVTETMBEGA1UECAwK
THV4ZW1ib3VyZzETMBEGA1UEBwwKTHV4ZW1ib3VyZzESMBAGA1UECgwJbG9jYWxo
b3N0MRIwEAYDVQQLDAlsb2NhbGhvc3QxCzAJBgNVBAMMAmNhMR0wGwYJKoZIhvcN
AQkBFg5yb290QGxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAOpn0LnH3KlJtPr6gjNuAw2jEsDXhHQ97HLHCb6n0f+37dlcEoxGtKAVPf3x
rxz2yf8Uqw+fzGAQ4p36k/9ssfpoHx2P5OOnX2q49iLO0rabXLfXxF9OCqr3Idko
Wjj2y/X6a0BCpBWdki/cOnqw8pmrCsnAG1YB4TyuR0hJ1bAKXKTPqYZ7zQZQm2GR
78PXAockrccXQyYoaNL3p7a+d+qXJkYmVX0r187IrjnWRDF/DFgzBvWVP/rUM0XL
Old+LbcJr3QWorXlfFGs1K+M67Fy+26BXwxeqhqrH0MOmlUeVCaVYz45ACYgiHV0
5bIgz6Lryn98nTR0uzQMU7UePZMCAwEAAaNQME4wHQYDVR0OBBYEFOWiAYmYILN7
aMfwMZeREIF45I+rMB8GA1UdIwQYMBaAFOWiAYmYILN7aMfwMZeREIF45I+rMAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAERA/QUP48scwzmxmFrwW+Ww
E1qPwE61Vzpke0xphm0WZpRNABNUL4eAdtw9yN2mDnhDm5KmVF92uLwFNqkNCwqO
h6vM/zEu6xp1AjG6WNfVmaGm/k0AGu8w+7GofsCLvWGKJcLX2w6fxy7dSwI836Kw
/QEnfEtdgri1e1hE6ZGRZv1vxkhVKHUAL/6aVV2cYscNYf+Ul1JkWkjIhrvzbEv+
hlfaYDlkKsFza2f+KTm9IPjgxb9gA/FHqVTiFaFcut2CnVxb/sbW44cbbae8dV4F
AXmLhAowvG3z8ufpUMs9ZFPtF60uAh+nOC79pdNH/kMYgKNCQNEc57LjFovIGQc=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAwu7fq5EH89WrHNXQntvSWQZb/C7cFtMIdUAvV9X8ZzjWNCKM
nl9zdrhiPq33011yT2JOG1KcDHf9XmYTJ6EIa+EO7+xQgjPdFNlk1Qp85UdLnyMa
2MqABjq4WfeJtjhmRFbFiBiy67Y1eFrC4XoULMEioVtQAcu3uPHszW/sh0oi7n+N
pZARcZ3xSnKy63f33VJxlUKiG5fHLAMmCsgGRG5paSiWRVe5CmajFf0g2Sz565HS
zDSSw9RfI/+oiDumj+x9wN9TiFp2h1bC1U3fLrZj6gD5xGBPj7cMIYD6ny1X4O4c
84iUQhHqmsEU6iQpWp/QjMd6Bln63bC3y208tQIDAQABAoIBAFijFcGFqQAO4Ee0
UbBqdDNW2OzKwfj+7JGkJeLiwmqNRZlfPGGnNXF+Ve36XP4XN6sxICL8ZUimJueN
spgKeTHUnF4sLk+GFbktQNQ+eJwo1xH9fG+nZJ9wg/Mkw9G/w4C/lAJWeMUFjTq0
yniMcjAHgh+szayDXX8TQoIHqp25JJLd6Xn5gJaqM0p6XqUE2NAHG/WHhZKYRd0p
zQATKVZ/RYriea5HN6+l6rBLqi0hqe8fqByodPVYEKh4fCrcsls3wROvgMmMOd5U
kvy9aK6niCSxA02y8C9WVeUEKpoe6n3YDkfSQTYQa431dDpQroLKI1mBY2PhgjvI
6gumxeECgYEA74PjSS+EHihOoiQPS/Z/8HE0KgQUVEzAIzI3I3Zd8nuXCTd8IVEO
JPiRbeiF216p3IeD1QG8gK6T9XvUqLGYKqJSuMJ5xBvq0k6n47CJ7FX7Cd7miGl5
wYHRV82vV+HszDS7b2PXnkQBalQleiKe8daRIxXKPGG58v6URE87Z08CgYEA0Fl6
AVFkCJbx5TRtoe2V1v+IoaAiC1U3yFptSeZm1cfOIcX7UFFDr4AoI3ZCeDDOYGQK
fjNWlndHXv/9DSRtfYJwxcn0ZpeNXrf5kHFAtNJoRhOvGDrj0vc7FZzspdi6oUez
S6EkjBWxGNvel7BRZCg8QhXXIAvOx6MWWm4ZWrsCgYEAjMfvu1+zf2pftcwONa8g
yjov2BZnwJkQQl/Mqwpy9AkS4Lb9PjP/ZVm5WWnX6/Y7T0VUBsqretOiYiMz/yfL
8htRFgoxOkTShGT5J8rndsOe99FNnZapm0TrwHlEfBpubiT8mt+LqBn+3vmwwZZB
6JIe4wl2woEKpDpg+bm8h98CgYEAz211kSBWBlM5KueCiqc9+ZnYjokdu8iwy7Bz
hBJ1qTrOV0ODjBgL2gsuavfO/1gf70lKRRCZkR3ZmZQkfFQbCcy2t8PzpbwWjAl/
1jVapWuhUrtAJFBlB2EKmt7rn8XhMLZwo8gf2bOy6DvmJYDt11hTfbu+vHHlAU61
73wTlAcCgYA0K5HWOb5sdNStdq9G52W6aNGAuWPF8vC8ph9mhGqb1sQ2NVrvu0Kj
7BB2wzxXUoBQigUtCqKGFU7HMbArxW7LOqGSD0nD72u1FhILOgESYfy2KS/JnAxL
NSSI414QETtZed8OmXzqwssdLGHBlO+qEhjptP9HQpg7/9IjDq5Oug==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIECDCCAvCgAwIBAgIBCzANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCTFUx
EzARBgNVBAgMCkx1eGVtYm91cmcxEzARBgNVBAcMCkx1eGVtYm91cmcxEjAQBgNV
BAoMCWxvY2FsaG9zdDESMBAGA1UECwwJbG9jYWxob3N0MQswCQYDVQQDDAJjYTEd
MBsGCSqGSIb3DQEJARYOcm9vdEBsb2NhbGhvc3QwHhcNMTYwNTI0MTUyOTIxWhcN
MjYwNTIyMTUyOTIxWjCBhzEcMBoGA1UEAwwTY2xpZW50LmxvY2FsLmNvbnN1bDET
MBEGA1UECAwKTHV4ZW1ib3VyZzELMAkGA1UEBhMCTFUxHTAbBgkqhkiG9w0BCQEW
DnJvb3RAbG9jYWxob3N0MRIwEAYDVQQKDAlsb2NhbGhvc3QxEjAQBgNVBAsMCWxv
Y2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMLu36uRB/PV
qxzV0J7b0lkGW/wu3BbTCHVAL1fV/Gc41jQijJ5fc3a4Yj6t99Ndck9iThtSnAx3
/V5mEyehCGvhDu/sUIIz3RTZZNUKfOVHS58jGtjKgAY6uFn3ibY4ZkRWxYgYsuu2
NXhawuF6FCzBIqFbUAHLt7jx7M1v7IdKIu5/jaWQEXGd8Upysut3991ScZVCohuX
xywDJgrIBkRuaWkolkVXuQpmoxX9INks+euR0sw0ksPUXyP/qIg7po/sfcDfU4ha
dodWwtVN3y62Y+oA+cRgT4+3DCGA+p8tV+DuHPOIlEIR6prBFOokKVqf0IzHegZZ
+t2wt8ttPLUCAwEAAaN5MHcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUyvEMuCadNsgZ
yF0OK+Z0CzjCuPUwHwYDVR0jBBgwFoAU5aIBiZggs3tox/Axl5EQgXjkj6swCwYD
VR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG
9w0BAQUFAAOCAQEAoo4MAvVoWpdrKM9sTaljDmcR0B/mIIx71+AM7B8H0Bg/cDnr
4ofvBntf+kw0oemrSnyd9fxTuONCyn4ROu496h15Wi1yy256v5UTj+zccHluHwbD
ZrRcN3WRdsGp65YQd/lyqNQ36t/19JCwhFYIHtx4j+JXa5va7d9tGcQyntqhYxxA
BUW1TQFhRxQEFzL6995jv/x43ie5OkDX4GZovNE5TJ8oGPLHg56TcjqpqOPGi3mR
L5bCnH1oKO4y/40nqxz+foW6JbpzQPRtV/D7abt0qWTaC0OxkpPayI8nHf67SMQl
GPPyFS/NxX63z5Ft/75kGnPqat9z9mJTnn518g==
-----END CERTIFICATE-----
#!/usr/bin/env bash
if [ -z "${CONSUL_AGENT}" ]; then
exit 0
fi
options=""
url="http://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLS}" ] && [ "${CONSUL_TLS}" -eq 1 ]; then
url="https://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLSCAFILE}" ]; then
options="${options} --cacert ${CONSUL_TLSCAFILE}"
fi
if [ ! -z "${CONSUL_TLSCERTFILE}" ]; then
options="${options} --cert ${CONSUL_TLSCERTFILE}"
fi
if [ ! -z "${CONSUL_TLSKEYFILE}" ]; then
options="${options} --key ${CONSUL_TLSKEYFILE}"
fi
if [ -z "${CONSUL_TLSVERIFY}" ] || [ "${CONSUL_TLSVERIFY}" -ne 1 ]; then
options="${options} --insecure"
fi
fi
if [ ! -z "${CONSUL_TOKEN}" ]; then
options="${options} --header X-Consul-Token:${CONSUL_TOKEN}"
fi
status=0
if [ -d /etc/cont-consul/services.d/ ]; then
for file in /etc/cont-consul/services.d/*.json; do
[ -f "$file" ] || continue
id=$(jq -r '.ID' "$file") && \
name=$(jq -r '.Name' "$file") && \
health=$(curl -s ${options} -X GET "${url}/v1/health/service/${name}" \
-G --data-urlencode "passing=true") && \
service_ids=$(echo "$health"|jq -r '.[].Service.ID') || break
check=0
for service_id in $service_ids; do
if [ "$service_id" == "$id" ]; then
check=1
break
fi
done
if [ $check -eq 0 ]; then
status=1
fi
done
fi
exit $status
#!/usr/bin/env bash
if [ -z ${CONSUL_AGENT} ]; then
exit 0
fi
options=""
url="http://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLS}" ] && [ "${CONSUL_TLS}" -eq 1 ]; then
url="https://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLSCAFILE}" ]; then
options="${options} --cacert ${CONSUL_TLSCAFILE}"
fi
if [ ! -z "${CONSUL_TLSCERTFILE}" ]; then
options="${options} --cert ${CONSUL_TLSCERTFILE}"
fi
if [ ! -z "${CONSUL_TLSKEYFILE}" ]; then
options="${options} --key ${CONSUL_TLSKEYFILE}"
fi
if [ -z "${CONSUL_TLSVERIFY}" ] || [ "${CONSUL_TLSVERIFY}" -ne 1 ]; then
options="${options} --insecure"
fi
fi
if [ ! -z "${CONSUL_TOKEN}" ]; then
options="${options} --header X-Consul-Token:${CONSUL_TOKEN}"
fi
status=0
if [ -d /etc/cont-consul/services.d/ ]; then
for file in /etc/cont-consul/services.d/*.json; do
[ -f "$file" ] || continue
serviceid=$(jq -r '.ID' "$file") && \
[ $(curl -s -w '%{http_code}' --out /dev/null ${options} \
-X GET "${url}/v1/agent/service/deregister/${serviceid}") == "200" ] || status=1
done
fi
if [ -d /etc/cont-consul/checks.d/ ]; then
for file in /etc/cont-consul/checks.d/*.json; do
[ -f "$file" ] || continue
checkid=$(jq -r '.ID' "$file") && \
[ $(curl -s -w '%{http_code}' --out /dev/null ${options} \
-X GET "${url}/v1/agent/check/deregister/${checkid}") == "200" ] || status=1
done
fi
exit $status
#!/usr/bin/env bash
if [ -z ${CONSUL_AGENT} ]; then
exit 0
fi
options=""
url="http://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLS}" ] && [ "${CONSUL_TLS}" -eq 1 ]; then
url="https://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLSCAFILE}" ]; then
options="${options} --cacert ${CONSUL_TLSCAFILE}"
fi
if [ ! -z "${CONSUL_TLSCERTFILE}" ]; then
options="${options} --cert ${CONSUL_TLSCERTFILE}"
fi
if [ ! -z "${CONSUL_TLSKEYFILE}" ]; then
options="${options} --key ${CONSUL_TLSKEYFILE}"
fi
if [ -z "${CONSUL_TLSVERIFY}" ] || [ "${CONSUL_TLSVERIFY}" -ne 1 ]; then
options="${options} --insecure"
fi
fi
if [ ! -z "${CONSUL_TOKEN}" ]; then
options="${options} --header X-Consul-Token:${CONSUL_TOKEN}"
fi
if [ ! -z "$1" ] && [ "$1" == "--enable" ]; then
options="${options} -G --data-urlencode enable=true"
elif [ ! -z "$1" ] && [ "$1" == "--disable" ]; then
options="${options} -G --data-urlencode enable=false"
else
exit 1
fi
status=0
if [ -d /etc/cont-consul/services.d/ ]; then
for file in /etc/cont-consul/services.d/*.json; do
[ -f "$file" ] || continue
serviceid=$(jq -r '.ID' "$file") && \
[ $(curl -s -w '%{http_code}' --out /dev/null ${options} \
-X PUT "${url}/v1/agent/service/maintenance/${serviceid}") == "200" ] || status=1
done
fi
exit $status
#!/usr/bin/env bash
if [ -z ${CONSUL_AGENT} ]; then
exit 0
fi
options=""
url="http://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLS}" ] && [ "${CONSUL_TLS}" -eq 1 ]; then
url="https://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLSCAFILE}" ]; then
options="${options} --cacert ${CONSUL_TLSCAFILE}"
fi
if [ ! -z "${CONSUL_TLSCERTFILE}" ]; then
options="${options} --cert ${CONSUL_TLSCERTFILE}"
fi
if [ ! -z "${CONSUL_TLSKEYFILE}" ]; then
options="${options} --key ${CONSUL_TLSKEYFILE}"
fi
if [ -z "${CONSUL_TLSVERIFY}" ] || [ "${CONSUL_TLSVERIFY}" -ne 1 ]; then
options="${options} --insecure"
fi
fi
if [ ! -z "${CONSUL_TOKEN}" ]; then
options="${options} --header X-Consul-Token:${CONSUL_TOKEN}"
fi
status=0
if [ -d /etc/cont-consul/services.d/ ]; then
for file in /etc/cont-consul/services.d/*.json; do
[ -f "$file" ] || continue
[ $(curl -s -w '%{http_code}' --out /dev/null ${options} \
-X PUT -d "@${file}" "${url}/v1/agent/service/register") == "200" ] || status=1
done
fi
if [ -d /etc/cont-consul/checks.d/ ]; then
for file in /etc/cont-consul/checks.d/*.json; do
[ -f "$file" ] || continue
[ $(curl -s -w '%{http_code}' --out /dev/null ${options} \
-X PUT -d "@${file}" "${url}/v1/agent/check/register") == "200" ] || status=1
done
fi
exit $status
#!/usr/bin/with-contenv sh
if [ ! -z ${CONSUL_AGENT} ]; then
echo "==> Deregistering container"
/etc/cont-consul/deregister
fi
#!/usr/bin/with-contenv sh
if [ ! -z ${CONSUL_AGENT} ] && [ ${CONSULTEMPLATE_CONTAINER} -eq 1 ]; then
echo "==> Removing container configuration"
rm -f /etc/cont-consul/services.d/container.json
rm -f /etc/cont-consul/checks.d/container-*.json
fi
#!/usr/bin/with-contenv sh
if [ ! -z ${CONSUL_AGENT} ] && [ ${CONSULTEMPLATE_SERVICES} -eq 1 ]; then
echo "==> Disabling services configuration"
touch /etc/services.d/consul-template/down
fi
#!/usr/bin/with-contenv sh
if [ -z "${CONSUL_AGENT}" ]; then
export CONSUL_AGENT=""
printf "%s" "${CONSUL_AGENT}" > /var/run/s6/container_environment/CONSUL_AGENT
fi
if [ -z "${CONSUL_PORT}" ]; then
export CONSUL_PORT=8500
printf "%s" "${CONSUL_PORT}" > /var/run/s6/container_environment/CONSUL_PORT
fi
if [ -z "${CONSUL_TLS}" ]; then
export CONSUL_TLS=""
printf "%s" "${CONSUL_TLS}" > /var/run/s6/container_environment/CONSUL_TLS
fi
if [ -z "${CONSUL_TOKEN}" ]; then
export CONSUL_TOKEN=""
printf "%s" "${CONSUL_TOKEN}" > /var/run/s6/container_environment/CONSUL_TOKEN
fi
if [ -z "${CONSUL_KEYPREFIX}" ]; then
export CONSUL_KEYPREFIX=""
printf "%s" "${CONSUL_KEYPREFIX}" > /var/run/s6/container_environment/CONSUL_KEYPREFIX
fi
if [ ! -z "${CONSUL_AGENT}" ] && [ ! -z "${CONSUL_SERVICENAME}" ]; then
if [ -z "${CONSUL_RESOLVER}" ]; then
CONSUL_RESOLVER=container
fi
case ${CONSUL_RESOLVER} in
container)
CONSUL_SERVICEADDR=${CONTAINER_IP}
;;
interface)
if [ -z "${CONTAINER_RESOLVER_INTERFACENAME}" ]; then
CONSUL_RESOLVER_INTERFACENAME=eth0
fi
if [ -z "${CONTAINER_RESOLVER_INTERFACETYPE}" ]; then
CONSUL_RESOLVER_INTERFACETYPE=inet
fi
CONSUL_SERVICEADDR=$(ip -o addr show ${CONSUL_RESOLVER_INTERFACENAME}|grep "${CONSUL_RESOLVER_INTERFACETYPE} "|awk '{ print $4; }'|sed -e 's/\/.*$//')
;;
route)
CONSUL_SERVICEADDR=$(ip route get 1|awk '{ print $NF; exit; }')
;;
esac
if [ -z "${CONSUL_SERVICEADDR}" ]; then
echo "Failed to resolve consul service address, aborting" >&2
exit 1
fi
export CONSUL_SERVICEADDR
printf "%s" "${CONSUL_SERVICEADDR}" > /var/run/s6/container_environment/CONSUL_SERVICEADDR
fi
if [ ! -z "${CONSUL_AGENT}" ]; then
options=""
url="http://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLS}" ] && [ ${CONSUL_TLS} -eq 1 ]; then
url="https://${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLSCAFILE}" ]; then
options="${options} --cacert ${CONSUL_TLSCAFILE}"
fi
if [ ! -z "${CONSUL_TLSCERTFILE}" ]; then
options="${options} --cert ${CONSUL_TLSCERTFILE}"
fi
if [ ! -z "${CONSUL_TLSKEYFILE}" ]; then
options="${options} --key ${CONSUL_TLSKEYFILE}"
fi
if [ -z "${CONSUL_TLSVERIFY}" ] || [ "${CONSUL_TLSVERIFY}" -ne 1 ]; then
options="${options} --insecure"
fi
fi
if [ ! -z "${CONSUL_TOKEN}" ]; then
options="${options} --header X-Consul-Token:${CONSUL_TOKEN}"
fi
retry=0
while true; do
[ $(curl -sI -w '%{http_code}' --out /dev/null ${options} "${url}/v1/agent/self") == "200" ] && break
retry=$((retry+1))
if [ "$retry" -lt 3 ]; then
echo "Failed to check consul agent, retrying in few seconds" >&2
sleep 15
continue
fi
echo "Failed to check consul agent, aborting" >&2
exit 1
done
fi
#!/usr/bin/with-contenv sh
if [ -z "$CONSULTEMPLATE_CONTAINER" ]; then
export CONSULTEMPLATE_CONTAINER=1
printf "%s" "${CONSULTEMPLATE_CONTAINER}" > /var/run/s6/container_environment/CONSULTEMPLATE_CONTAINER
fi
if [ -z "$CONSULTEMPLATE_SERVICES" ]; then
export CONSULTEMPLATE_SERVICES=1
printf "%s" "${CONSULTEMPLATE_SERVICES}" > /var/run/s6/container_environment/CONSULTEMPLATE_SERVICES
fi
if [ ! -z "${CONSUL_AGENT}" ] && [ "${CONSULTEMPLATE_CONTAINER}" -eq 1 ]; then
echo "==> Creating container configuration"
options="-config /etc/consul-template/conf-cont.d -once -consul-addr ${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLS}" ] && [ "${CONSUL_TLS}" -eq 1 ]; then
options="${options} -consul-ssl"
if [ ! -z "${CONSUL_TLSCAFILE}" ]; then
options="${options} -consul-ssl-ca-cert ${CONSUL_TLSCAFILE}"
fi
if [ ! -z "${CONSUL_TLSCERTFILE}" ]; then
options="${options} -consul-ssl-cert ${CONSUL_TLSCERTFILE}"
fi
if [ ! -z "${CONSUL_TLSKEYFILE}" ]; then
options="${options} -consul-ssl-key ${CONSUL_TLSKEYFILE}"
fi
if [ ! -z "${CONSUL_TLSSERVERNAME}" ]; then
options="${options} -consul-ssl-server-name ${CONSUL_TLSSERVERNAME}"
fi
if [ ! -z "${CONSUL_TLSVERIFY}" ] && [ "${CONSUL_TLSVERIFY}" -eq 1 ]; then
options="${options} -consul-ssl-verify"
fi
fi
if [ ! -z "${CONSUL_TOKEN}" ]; then
options="${options} -consul-token ${CONSUL_TOKEN}"
fi
options="${options} -kill-signal SIGTERM"
if [ ! -z "${CONSULTEMPLATE_OPTIONS}" ]; then
options="${options} ${CONSULTEMPLATE_OPTIONS}"
fi
consul-template ${options}
if [ $? -ne 0 ]; then
echo "Failed to render templates, aborting" >&2
exit 1
fi
fi
#!/usr/bin/with-contenv sh
if [ ! -z "${CONSUL_AGENT}" ]; then
echo "==> Registering container"
/etc/cont-consul/register || (
echo "Failed to register container, aborting" >&2 && exit 1
)
fi
#!/usr/bin/with-contenv sh
if [ ! -z "${CONSUL_AGENT}" ] && [ "${CONSULTEMPLATE_SERVICES}" -eq 1 ]; then
count=$(find /etc/consul-template/conf-services.d/ -maxdepth 1 -type f|wc -l)
if [ "$count" -gt 0 ]; then
echo "==> Enabling services configuration"
rm -f /etc/services.d/consul-template/down
fi
fi
/etc/consul.d true root:consul 0640 0750
/var/lib/consul false consul:consul 0640 0750
/etc/consul-template false root:root 0640 0750
/etc/cont-consul false root:root 0640 0750
#!/usr/bin/with-contenv sh
options="-config /etc/consul-template/conf-services.d -consul-addr ${CONSUL_AGENT}:${CONSUL_PORT}"
if [ ! -z "${CONSUL_TLS}" ] && [ "${CONSUL_TLS}" -eq 1 ]; then
options="${options} -consul-ssl"
if [ ! -z "${CONSUL_TLSCAFILE}" ]; then
options="${options} -consul-ssl-ca-cert ${CONSUL_TLSCAFILE}"
fi
if [ ! -z "${CONSUL_TLSCERTFILE}" ]; then
options="${options} -consul-ssl-cert ${CONSUL_TLSCERTFILE}"
fi
if [ ! -z "${CONSUL_TLSKEYFILE}" ]; then
options="${options} -consul-ssl-key ${CONSUL_TLSKEYFILE}"
fi
if [ ! -z "${CONSUL_TLSSERVERNAME}" ]; then
options="${options} -consul-ssl-server-name ${CONSUL_TLSSERVERNAME}"
fi
if [ ! -z "${CONSUL_TLSVERIFY}" ] && [ "${CONSUL_TLSVERIFY}" -eq 1 ]; then
options="${options} -consul-ssl-verify"
fi
fi
if [ ! -z "${CONSUL_TOKEN}" ]; then
options="${options} -consul-token ${CONSUL_TOKEN}"
fi
options="${options} -kill-signal SIGTERM"
if [ ! -z "${CONSULTEMPLATE_OPTIONS}" ]; then
options="${options} ${CONSULTEMPLATE_OPTIONS}"
fi
exec /bin/consul-template ${options}
ARG ALPINE_VERSION=3.6
FROM alpine:${ALPINE_VERSION}
# ================================================================================================
# Inspiration: Docker Alpine (https://github.com/bhuisgen/docker-alpine)
# Boris HUISGEN <bhuisgen@hbis.fr>
# ================================================================================================
# Core Contributors:
# - Mahmoud Zalt @mahmoudz
# - Bo-Yi Wu @appleboy
# - Philippe Trépanier @philtrep
# - Mike Erickson @mikeerickson
# - Dwi Fahni Denni @zeroc0d3
# - Thor Erik @thorerik
# - Winfried van Loon @winfried-van-loon
# - TJ Miller @sixlive
# - Yu-Lung Shao (Allen) @bestlong
# - Milan Urukalo @urukalo
# - Vince Chu @vwchu
# - Huadong Zuo @zuohuadong
# ================================================================================================
MAINTAINER "Laradock Team <mahmoud@zalt.me>"
ENV S6OVERLAY_VERSION=v1.20.0.0 \
S6_BEHAVIOUR_IF_STAGE2_FAILS=1 \
LANG=en_US.UTF-8 \
LC_ALL=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8 \
TERM=xterm
RUN apk update && \
apk upgrade && \
apk add bash bind-tools ca-certificates curl jq tar && \
curl -sSL https://github.com/just-containers/s6-overlay/releases/download/${S6OVERLAY_VERSION}/s6-overlay-amd64.tar.gz | tar xz -C / && \
apk del tar && \
rm -rf /var/cache/apk/*
COPY rootfs /
MIT License
Copyright (c) 2018 Docker Framework
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
IMAGE = dockerframework/core-base
clean-local:
docker rmi $(CLEAN_OPTIONS) $(IMAGE):$(TAG) || true
build:
docker build $(BUILD_OPTIONS) -t $(IMAGE):$(TAG) .
pull:
docker pull $(PULL_OPTIONS) $(IMAGE):$(TAG)
push: build
docker push $(PUSH_OPTIONS) $(IMAGE):$(TAG)
This diff is collapsed.
# Core-Base Container
Core-Base Container of Docker Framework
[![Build Status](https://travis-ci.org/dockerframework/core-base.svg?branch=master)](https://travis-ci.org/dockerframework/core-base) [![](https://images.microbadger.com/badges/image/dockerframework/core-base:latest.svg)](https://microbadger.com/images/dockerframework/core-base:latest "Layers") [![](https://images.microbadger.com/badges/version/dockerframework/core-base:latest.svg)](https://microbadger.com/images/dockerframework/core-base:latest "Version") [![GitHub issues](https://img.shields.io/github/issues/dockerframework/core-base.svg)](https://github.com/dockerframework/core-base/issues) [![GitHub forks](https://img.shields.io/github/forks/dockerframework/core-base.svg)](https://github.com/dockerframework/core-base/network) [![GitHub stars](https://img.shields.io/github/stars/dockerframework/core-base.svg)](https://github.com/dockerframework/core-base/stargazers) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/dockerframework/core-base/master/LICENSE)
version: '3.2'
services:
#================================================================================================
# CORE-BASE
#================================================================================================
core-base:
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
#- CONTAINER_HOST= # container host (defaut: hostname of the container)
#- CONTAINER_RESOLVER=route # IP resolver method for container (disable/route/interface, default: route)
#- CONTAINER_RESOLVER_INTERFACENAME=eth0 # network interface name for IP resolver (default: eth0)
#- CONTAINER_RESOLVER_INTERFACETYPE=inet # network interface type for IP resolver (inet/inet6, default: inet)
#!/usr/bin/with-contenv sh
if [ ! -z "${CONTAINER_HOST}" ] && [ ! -z "${CONTAINER_IP}" ]; then
rm -f /var/run/s6/container_environment/CONTAINER_HOST
rm -f /var/run/s6/container_environment/CONTAINER_IP
fi
#!/usr/bin/with-contenv sh
links=$(ip -o link show|wc -l)
if [ ${links} -gt 1 ]; then
if [ -z "${CONTAINER_HOST}" ]; then
CONTAINER_HOST=$(cat /etc/hostname)
fi
if [ -z "${CONTAINER_HOST}" ]; then
echo "Failed to get hostname, aborting" >&2
exit 1
fi
if [ -z "${CONTAINER_RESOLVER}" ]; then
CONTAINER_RESOLVER=route
fi
case "${CONTAINER_RESOLVER}" in
interface)
if [ -z "${CONTAINER_RESOLVER_INTERFACENAME}" ]; then
CONTAINER_RESOLVER_INTERFACENAME=eth0
fi
if [ -z "${CONTAINER_RESOLVER_INTERFACETYPE}" ]; then
CONTAINER_RESOLVER_INTERFACETYPE=inet
fi
CONTAINER_IP=$(ip -o addr show "${CONTAINER_RESOLVER_INTERFACENAME}"|grep "${CONTAINER_RESOLVER_INTERFACETYPE} "|awk '{ print $4; }'|sed -e 's/\/.*$//')
if [ -z "${CONTAINER_IP}" ]; then
echo "Failed to get IP address, aborting" >&2
exit 2
fi
;;
route)
CONTAINER_IP=$(ip route get 1|awk '{ print $NF; exit; }')
if [ -z "${CONTAINER_IP}" ]; then
echo "Failed to get IP address, aborting" >&2
exit 2
fi
;;
esac
export CONTAINER_HOST
export CONTAINER_IP
printf "%s" "${CONTAINER_HOST}" > /var/run/s6/container_environment/CONTAINER_HOST
printf "%s" "${CONTAINER_IP}" > /var/run/s6/container_environment/CONTAINER_IP
fi
#!/usr/bin/execlineb -S0
if { s6-test $# -eq 2 }
backtick -in FILENAME {
pipeline { s6-echo "${1}" }
tr "a-z" "A-Z"
}
import -u FILENAME
redirfd -w 1 /var/run/s6/container_environment/${FILENAME}
s6-echo -n -- ${2}
ARG ALPINE_VERSION=3.7
FROM alpine:${ALPINE_VERSION}
# ================================================================================================
# Inspiration: Docker Alpine (https://github.com/bhuisgen/docker-alpine)
# Boris HUISGEN <bhuisgen@hbis.fr>
# ================================================================================================
# Core Contributors:
# - Mahmoud Zalt @mahmoudz
# - Bo-Yi Wu @appleboy
# - Philippe Trépanier @philtrep
# - Mike Erickson @mikeerickson
# - Dwi Fahni Denni @zeroc0d3
# - Thor Erik @thorerik
# - Winfried van Loon @winfried-van-loon
# - TJ Miller @sixlive
# - Yu-Lung Shao (Allen) @bestlong
# - Milan Urukalo @urukalo
# - Vince Chu @vwchu
# - Huadong Zuo @zuohuadong
# ================================================================================================
MAINTAINER "Laradock Team <mahmoud@zalt.me>"
ENV S6OVERLAY_VERSION=v1.21.4.0 \
S6_BEHAVIOUR_IF_STAGE2_FAILS=1 \
LANG=en_US.UTF-8 \
LC_ALL=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8 \
TERM=xterm
RUN apk update && \
apk upgrade && \
apk add bash bind-tools ca-certificates curl jq tar && \
curl -sSL https://github.com/just-containers/s6-overlay/releases/download/${S6OVERLAY_VERSION}/s6-overlay-amd64.tar.gz | tar xz -C / && \
apk del tar && \
rm -rf /var/cache/apk/*
COPY rootfs /
MIT License
Copyright (c) 2018 Docker Framework
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
IMAGE = dockerframework/core-base
clean-local:
docker rmi $(CLEAN_OPTIONS) $(IMAGE):$(TAG) || true
build:
docker build $(BUILD_OPTIONS) -t $(IMAGE):$(TAG) .
pull:
docker pull $(PULL_OPTIONS) $(IMAGE):$(TAG)
push: build
docker push $(PUSH_OPTIONS) $(IMAGE):$(TAG)
This diff is collapsed.
# Core-Base Container
Core-Base Container of Docker Framework
[![Build Status](https://travis-ci.org/dockerframework/core-base.svg?branch=master)](https://travis-ci.org/dockerframework/core-base) [![](https://images.microbadger.com/badges/image/dockerframework/core-base:latest.svg)](https://microbadger.com/images/dockerframework/core-base:latest "Layers") [![](https://images.microbadger.com/badges/version/dockerframework/core-base:latest.svg)](https://microbadger.com/images/dockerframework/core-base:latest "Version") [![GitHub issues](https://img.shields.io/github/issues/dockerframework/core-base.svg)](https://github.com/dockerframework/core-base/issues) [![GitHub forks](https://img.shields.io/github/forks/dockerframework/core-base.svg)](https://github.com/dockerframework/core-base/network) [![GitHub stars](https://img.shields.io/github/stars/dockerframework/core-base.svg)](https://github.com/dockerframework/core-base/stargazers) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/dockerframework/core-base/master/LICENSE)
version: '3.2'
services:
#================================================================================================
# CORE-BASE
#================================================================================================
core-base:
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
#- CONTAINER_HOST= # container host (defaut: hostname of the container)
#- CONTAINER_RESOLVER=route # IP resolver method for container (disable/route/interface, default: route)
#- CONTAINER_RESOLVER_INTERFACENAME=eth0 # network interface name for IP resolver (default: eth0)
#- CONTAINER_RESOLVER_INTERFACETYPE=inet # network interface type for IP resolver (inet/inet6, default: inet)
#!/usr/bin/with-contenv sh
if [ ! -z "${CONTAINER_HOST}" ] && [ ! -z "${CONTAINER_IP}" ]; then
rm -f /var/run/s6/container_environment/CONTAINER_HOST
rm -f /var/run/s6/container_environment/CONTAINER_IP
fi
#!/usr/bin/with-contenv sh
links=$(ip -o link show|wc -l)
if [ ${links} -gt 1 ]; then
if [ -z "${CONTAINER_HOST}" ]; then
CONTAINER_HOST=$(cat /etc/hostname)
fi
if [ -z "${CONTAINER_HOST}" ]; then
echo "Failed to get hostname, aborting" >&2
exit 1
fi
if [ -z "${CONTAINER_RESOLVER}" ]; then
CONTAINER_RESOLVER=route
fi
case "${CONTAINER_RESOLVER}" in
interface)
if [ -z "${CONTAINER_RESOLVER_INTERFACENAME}" ]; then
CONTAINER_RESOLVER_INTERFACENAME=eth0
fi
if [ -z "${CONTAINER_RESOLVER_INTERFACETYPE}" ]; then
CONTAINER_RESOLVER_INTERFACETYPE=inet
fi
CONTAINER_IP=$(ip -o addr show "${CONTAINER_RESOLVER_INTERFACENAME}"|grep "${CONTAINER_RESOLVER_INTERFACETYPE} "|awk '{ print $4; }'|sed -e 's/\/.*$//')
if [ -z "${CONTAINER_IP}" ]; then
echo "Failed to get IP address, aborting" >&2
exit 2
fi
;;
route)
CONTAINER_IP=$(ip route get 1|awk '{ print $NF; exit; }')
if [ -z "${CONTAINER_IP}" ]; then
echo "Failed to get IP address, aborting" >&2
exit 2
fi
;;
esac
export CONTAINER_HOST
export CONTAINER_IP
printf "%s" "${CONTAINER_HOST}" > /var/run/s6/container_environment/CONTAINER_HOST
printf "%s" "${CONTAINER_IP}" > /var/run/s6/container_environment/CONTAINER_IP
fi
#!/usr/bin/execlineb -S0
if { s6-test $# -eq 2 }
backtick -in FILENAME {
pipeline { s6-echo "${1}" }
tr "a-z" "A-Z"
}
import -u FILENAME
redirfd -w 1 /var/run/s6/container_environment/${FILENAME}
s6-echo -n -- ${2}
FROM dockerframework/core-base:latest
# ================================================================================================
# Inspiration: Docker Alpine (https://github.com/bhuisgen/docker-alpine)
# Boris HUISGEN <bhuisgen@hbis.fr>
# ================================================================================================
# Core Contributors:
# - Mahmoud Zalt @mahmoudz
# - Bo-Yi Wu @appleboy
# - Philippe Trépanier @philtrep
# - Mike Erickson @mikeerickson
# - Dwi Fahni Denni @zeroc0d3
# - Thor Erik @thorerik
# - Winfried van Loon @winfried-van-loon
# - TJ Miller @sixlive
# - Yu-Lung Shao (Allen) @bestlong
# - Milan Urukalo @urukalo
# - Vince Chu @vwchu
# - Huadong Zuo @zuohuadong
# ================================================================================================
MAINTAINER "Laradock Team <mahmoud@zalt.me>"
ENV CONSUL_VERSION=1.0.7 \
CONSULTEMPLATE_VERSION=0.19.4
RUN mkdir -p /var/lib/consul && \
addgroup -g 500 -S consul && \
adduser -u 500 -S -D -g "" -G consul -s /sbin/nologin -h /var/lib/consul consul && \
chown -R consul:consul /var/lib/consul
RUN apk add --update zip && \
curl -sSL https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip -o /tmp/consul.zip && \
unzip /tmp/consul.zip -d /bin && \
rm /tmp/consul.zip && \
curl -sSL https://releases.hashicorp.com/consul-template/${CONSULTEMPLATE_VERSION}/consul-template_${CONSULTEMPLATE_VERSION}_linux_amd64.zip -o /tmp/consul-template.zip && \
unzip /tmp/consul-template.zip -d /bin && \
rm /tmp/consul-template.zip && \
apk del zip && \
rm -rf /var/cache/apk/*
COPY rootfs/ /
ENTRYPOINT ["/init"]
CMD []
EXPOSE 3000 3000/udp 8300 8301 8301/udp 8302 8302/udp 8500 8501 8600 8600/udp 9000 9000/udp 9001 9001/udp
VOLUME ["/var/lib/consul"]
HEALTHCHECK CMD /etc/consul.d/check || exit 1
IMAGE = dockerframework/core-consul
clean-local:
docker rmi $(CLEAN_OPTIONS) $(IMAGE):$(TAG) || true
build:
docker build $(BUILD_OPTIONS) -t $(IMAGE):$(TAG) .
pull:
docker pull $(PULL_OPTIONS) $(IMAGE):$(TAG)
push: build
docker push $(PUSH_OPTIONS) $(IMAGE):$(TAG)
This diff is collapsed.
# Core-Consul Container
Core-Consul Container of Docker Framework
[![Build Status](https://travis-ci.org/dockerframework/core-consul.svg?branch=master)](https://travis-ci.org/dockerframework/core-consul) [![](https://images.microbadger.com/badges/image/dockerframework/core-consul:latest.svg)](https://microbadger.com/images/dockerframework/core-consul:latest "Layers") [![](https://images.microbadger.com/badges/version/dockerframework/core-consul:latest.svg)](https://microbadger.com/images/dockerframework/core-consul:latest "Version") [![GitHub issues](https://img.shields.io/github/issues/dockerframework/core-consul.svg)](https://github.com/dockerframework/core-consul/issues) [![GitHub forks](https://img.shields.io/github/forks/dockerframework/core-consul.svg)](https://github.com/dockerframework/core-consul/network) [![GitHub stars](https://img.shields.io/github/stars/dockerframework/core-consul.svg)](https://github.com/dockerframework/core-consul/stargazers) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/dockerframework/core-consul/master/LICENSE)
-----BEGIN CERTIFICATE-----
MIIECDCCAvCgAwIBAgIBCjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCTFUx
EzARBgNVBAgMCkx1eGVtYm91cmcxEzARBgNVBAcMCkx1eGVtYm91cmcxEjAQBgNV
BAoMCWxvY2FsaG9zdDESMBAGA1UECwwJbG9jYWxob3N0MQswCQYDVQQDDAJjYTEd
MBsGCSqGSIb3DQEJARYOcm9vdEBsb2NhbGhvc3QwHhcNMTYwNTI0MTUyODQ1WhcN
MjYwNTIyMTUyODQ1WjCBhzEcMBoGA1UEAwwTc2VydmVyLmxvY2FsLmNvbnN1bDET
MBEGA1UECAwKTHV4ZW1ib3VyZzELMAkGA1UEBhMCTFUxHTAbBgkqhkiG9w0BCQEW
DnJvb3RAbG9jYWxob3N0MRIwEAYDVQQKDAlsb2NhbGhvc3QxEjAQBgNVBAsMCWxv
Y2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOjtSzIwKVrQ
ZA2Zq32eXHpFza9tT0In+bUGwOBmlBf8aOc3xuzir2tLWqs/set3otPeprM5GpqY
ZNrz+bpIU/2Di98vrpgfmYWlD7vBW9j2TuuxjdpV5wafl+VClmAZSrYC1TWLdKZx
FwsfseUqq/F8iD9dsHmIenbuZcpPUkN8LNhx7KS98u/hlPnP42EI3XScx1XD2jNU
m2lFezg8J3MIFpbdmGxQQ1r0HhM3rT5wIMkYeyRhGCns3odw4jTmCZ32/uqb7+w5
alw5OQtnPyFUfft3K0bqvCaxhTXj1komDIhwd5pfDD/jHV1+PZhZGKdgOF8xQ/00
lyDxj24+Xg0CAwEAAaN5MHcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUq/HZXu4qH9x3
RZZ+QnWoVU0xGjgwHwYDVR0jBBgwFoAU5aIBiZggs3tox/Axl5EQgXjkj6swCwYD
VR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG
9w0BAQUFAAOCAQEANszbbzGydlzq7RQ6eaFjJ54AuKI3v0E9Ai3YjeTPoPQpuICo
xMEOLJSce2uT+Xc9HvzCerN/4xXFhMgqX3gwWdQwPpvV9mpb9zselrZe5ReUNLUB
zDhoZovuNaw2bNuq9t4guKM7qFkeQ5rJu12jHYToCw3fa9M4Y20yZ/iusfa3eS3p
iRaBc8S27eEE3zX9IVSXIGNxK+7KQfFTrs6MTerz+V71K6XFDAe60rtJ2fbUjzVo
HKtSu6KOfvvve5vY9bjYI/1bUXNlDHC9V4+soxaxK/z3+npsOvlVyWn2zDZkPDcq
hiZnkNgRVtr4uMxyJW+CqJxcmjhOur3DmLWXtA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIECDCCAvCgAwIBAgIBCzANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCTFUx
EzARBgNVBAgMCkx1eGVtYm91cmcxEzARBgNVBAcMCkx1eGVtYm91cmcxEjAQBgNV
BAoMCWxvY2FsaG9zdDESMBAGA1UECwwJbG9jYWxob3N0MQswCQYDVQQDDAJjYTEd
MBsGCSqGSIb3DQEJARYOcm9vdEBsb2NhbGhvc3QwHhcNMTYwNTI0MTUyOTIxWhcN
MjYwNTIyMTUyOTIxWjCBhzEcMBoGA1UEAwwTY2xpZW50LmxvY2FsLmNvbnN1bDET
MBEGA1UECAwKTHV4ZW1ib3VyZzELMAkGA1UEBhMCTFUxHTAbBgkqhkiG9w0BCQEW
DnJvb3RAbG9jYWxob3N0MRIwEAYDVQQKDAlsb2NhbGhvc3QxEjAQBgNVBAsMCWxv
Y2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMLu36uRB/PV
qxzV0J7b0lkGW/wu3BbTCHVAL1fV/Gc41jQijJ5fc3a4Yj6t99Ndck9iThtSnAx3
/V5mEyehCGvhDu/sUIIz3RTZZNUKfOVHS58jGtjKgAY6uFn3ibY4ZkRWxYgYsuu2
NXhawuF6FCzBIqFbUAHLt7jx7M1v7IdKIu5/jaWQEXGd8Upysut3991ScZVCohuX
xywDJgrIBkRuaWkolkVXuQpmoxX9INks+euR0sw0ksPUXyP/qIg7po/sfcDfU4ha
dodWwtVN3y62Y+oA+cRgT4+3DCGA+p8tV+DuHPOIlEIR6prBFOokKVqf0IzHegZZ
+t2wt8ttPLUCAwEAAaN5MHcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUyvEMuCadNsgZ
yF0OK+Z0CzjCuPUwHwYDVR0jBBgwFoAU5aIBiZggs3tox/Axl5EQgXjkj6swCwYD
VR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG
9w0BAQUFAAOCAQEAoo4MAvVoWpdrKM9sTaljDmcR0B/mIIx71+AM7B8H0Bg/cDnr
4ofvBntf+kw0oemrSnyd9fxTuONCyn4ROu496h15Wi1yy256v5UTj+zccHluHwbD
ZrRcN3WRdsGp65YQd/lyqNQ36t/19JCwhFYIHtx4j+JXa5va7d9tGcQyntqhYxxA
BUW1TQFhRxQEFzL6995jv/x43ie5OkDX4GZovNE5TJ8oGPLHg56TcjqpqOPGi3mR
L5bCnH1oKO4y/40nqxz+foW6JbpzQPRtV/D7abt0qWTaC0OxkpPayI8nHf67SMQl
GPPyFS/NxX63z5Ft/75kGnPqat9z9mJTnn518g==
-----END CERTIFICATE-----
[ ca ]
default_ca = myca
[ crl_ext ]
authorityKeyIdentifier=keyid:always
[ myca ]
unique_subject = no
new_certs_dir = .
certificate = keys/ca.pem
database = certindex
private_key = keys/ca-priv-key.pem
serial = serial
default_days = 3650
default_md = sha1
policy = myca_policy
x509_extensions = myca_extensions
[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = optional
organizationName = supplied
organizationalUnitName = optional
[ myca_extensions ]
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
keyUsage = digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth,clientAuth
#!/bin/sh
if [ -f keys/ca-priv-key.pem ] || [ -f keys/ca.pem ] || [ -f serial ] || [ -f certindex ]; then
echo "CA already generated, aborting"
exit 1
fi
mkdir -p keys
echo "000a" > serial
touch certindex
openssl genrsa -des3 -out keys/ca-priv-key.pem 2048
openssl req -x509 -new -nodes -key keys/ca-priv-key.pem -sha256 -days 3650 -out keys/ca.pem
#!/bin/sh
NAME=$1
if [ -z "$NAME" ]; then
echo "Missing argument: certificate name"
exit 1
fi
if [ ! -f keys/ca-priv-key.pem ] || [ ! -f keys/ca.pem ]; then
echo "CA certificate not generated, aborting"
exit 2
fi
if [ -f "keys/$NAME-priv-key.pem" ] || [ -f "keys/$NAME-priv-key.pem" ]; then
echo "Client certificate already generated, aborting"
exit 3
fi
openssl genrsa -out keys/${NAME}-priv-key.pem 2048
openssl req -new -key keys/${NAME}-priv-key.pem -out keys/${NAME}.csr
openssl ca -batch -config ca.cnf -notext -in keys/${NAME}.csr -out keys/${NAME}.pem
V 260522152845Z 0A unknown /CN=server.local.consul/ST=Luxembourg/C=LU/emailAddress=root@localhost/O=localhost/OU=localhost
V 260522152921Z 0B unknown /CN=client.local.consul/ST=Luxembourg/C=LU/emailAddress=root@localhost/O=localhost/OU=localhost
V 260522152845Z 0A unknown /CN=server.local.consul/ST=Luxembourg/C=LU/emailAddress=root@localhost/O=localhost/OU=localhost
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BE8D7521AC33A89
ETcWd0lv9q0MThSk7MR12wv94xBtvSY5pCpUBPZRzNRG5q041mXDzSB83eXxZdPQ
18kcfQiGEC/T3Q692P+KouFbUJY/l/IPEru8+dGuL6TolGpbbDrW1hsWZQl5VMnK
7ShidIMXMahA+bT6lZGqc4i9joo/S4srwyW+oRuShgRqgDa6bcOYXS+7R4VgjCIM
UefrBXTtOJcpNPqI2TV1rrQRmhOBlTv7s/cR9dDmzsUaboHht+pu9G5H9TlXXNXn
yjVtvlzhLZsrN96o7CVJUB7yTl1FmXzfb9TVLT2MxQ/r3zlfuw+AwDwb5aC73zoN
lA/micWrzZyKYn8iNIju3g526K3LKMt/m+tE6C7vsGWzbIyWe/H7lYh7rr0TvGah
wL8OzeOlTYlRjv4ZF8CoT2knN4KNffmBJVfF9NtGYM10W4pWX+BSHFbwV+16x/zG
/1MOYrnykW2TxuPOc2vtjzZvdTq8qOWotGBv2bSS/RMgHi4DwaDLjyQdT8nU/r0f
2uSnuPZMv/fpHo0UR4X+i5GgnUtgkXhIJXfpLU4PAVSyxwn8RNjZKOik6SQEZvUB
QfVovTXu9YfEGyr4Ka5xrJHvArwWoQ90KdMcHaSAri3pIDgJQrP8kmCj9y6cNGmU
M1eYf8aMmNZW7ZJckuogSBXfClRTmqw4A1EfBlIuEH5JBIO+pmdSLyPLCVHzDVLL
j4FQ8uj6QB39dmihnE4GSC+bY0bU1vbhldClBIlUhGd1d0OQFhX3jdYxkcJ4Uw50
HEFzylOkTxRbniF4o5jBCI4MVI9TRRsNbdjfK0VheyTfy8Z1nyneFTlzzBasYoVz
4VtxLOYemvfqYneFicLw6X5z4t5lXv6Bay7lsjck44LTfHm0Vhpzqoki4flt56ja
Ykoy3+5fl4NEzbW+vS/7GYkrOkWbt+N/iNm7z0cfpLUEguXk4WtxQLGLXc7Pbf/O
54Qn4VJY961DxdsXFfmx1tgOfXAQL2UiFd0TQsWWtV4X3Uc9JN9rR1347xI9tc4v
bnQOQoPtZWB990gP7SYp23iI0oQvu2oc75IJw8rEXT0rNngvhX5GfOvstUuYiUTE
C162VZlfs3SunBxfoPdo9fQCBs+duH1NVWIoJ2hzRFktGLYrdIvwA8mpg7QVuw4S
o+Oxmdckg9syvQElFtpq4ADbCrwYyUHbRYg1G9SyKH2Gj6abQmY8AHCJtWKSOpIJ
CSw+3qcjeIdYkJeU7/0zLtAZNEjfktyf62ycCtzQCjsRpQxddfg3G7DJPxFT8i9p
+YudRx8A7qsmuPo3E8dKxmdlVJuTKIo7qPASjCY7WsFgfK5+9g9EcDfC8CQXVYiw
A6nzWkV847wRSBMCfArS/87OaWcQrhJyjec4OxyPJcURUKvn5i2UiatoHltvVfCM
cSQgheXFBoWNmo0ehy7Opf0q6E4k6HllXRMP0NL8wBWOB7GciryspJ+QtK+XXnWq
Y5DSNYIc+qfMBmMvDDoFFZkmwQBAD3x45i+SBXOL7Y7S0Tlf+DGBNVwaXFSe7G8E
sjm5SYRrzHnI65GcUAZr4rRi46FNuimIvx+0A9hylgWbfsBJJAR1GczBbXsaOeGP
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIID6zCCAtOgAwIBAgIJAKMb63RFQYl1MA0GCSqGSIb3DQEBCwUAMIGLMQswCQYD
VQQGEwJMVTETMBEGA1UECAwKTHV4ZW1ib3VyZzETMBEGA1UEBwwKTHV4ZW1ib3Vy
ZzESMBAGA1UECgwJbG9jYWxob3N0MRIwEAYDVQQLDAlsb2NhbGhvc3QxCzAJBgNV
BAMMAmNhMR0wGwYJKoZIhvcNAQkBFg5yb290QGxvY2FsaG9zdDAeFw0xNjA1MjQx
NTI3NDNaFw0yNjA1MjIxNTI3NDNaMIGLMQswCQYDVQQGEwJMVTETMBEGA1UECAwK
THV4ZW1ib3VyZzETMBEGA1UEBwwKTHV4ZW1ib3VyZzESMBAGA1UECgwJbG9jYWxo
b3N0MRIwEAYDVQQLDAlsb2NhbGhvc3QxCzAJBgNVBAMMAmNhMR0wGwYJKoZIhvcN
AQkBFg5yb290QGxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAOpn0LnH3KlJtPr6gjNuAw2jEsDXhHQ97HLHCb6n0f+37dlcEoxGtKAVPf3x
rxz2yf8Uqw+fzGAQ4p36k/9ssfpoHx2P5OOnX2q49iLO0rabXLfXxF9OCqr3Idko
Wjj2y/X6a0BCpBWdki/cOnqw8pmrCsnAG1YB4TyuR0hJ1bAKXKTPqYZ7zQZQm2GR
78PXAockrccXQyYoaNL3p7a+d+qXJkYmVX0r187IrjnWRDF/DFgzBvWVP/rUM0XL
Old+LbcJr3QWorXlfFGs1K+M67Fy+26BXwxeqhqrH0MOmlUeVCaVYz45ACYgiHV0
5bIgz6Lryn98nTR0uzQMU7UePZMCAwEAAaNQME4wHQYDVR0OBBYEFOWiAYmYILN7
aMfwMZeREIF45I+rMB8GA1UdIwQYMBaAFOWiAYmYILN7aMfwMZeREIF45I+rMAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAERA/QUP48scwzmxmFrwW+Ww
E1qPwE61Vzpke0xphm0WZpRNABNUL4eAdtw9yN2mDnhDm5KmVF92uLwFNqkNCwqO
h6vM/zEu6xp1AjG6WNfVmaGm/k0AGu8w+7GofsCLvWGKJcLX2w6fxy7dSwI836Kw
/QEnfEtdgri1e1hE6ZGRZv1vxkhVKHUAL/6aVV2cYscNYf+Ul1JkWkjIhrvzbEv+
hlfaYDlkKsFza2f+KTm9IPjgxb9gA/FHqVTiFaFcut2CnVxb/sbW44cbbae8dV4F
AXmLhAowvG3z8ufpUMs9ZFPtF60uAh+nOC79pdNH/kMYgKNCQNEc57LjFovIGQc=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAwu7fq5EH89WrHNXQntvSWQZb/C7cFtMIdUAvV9X8ZzjWNCKM
nl9zdrhiPq33011yT2JOG1KcDHf9XmYTJ6EIa+EO7+xQgjPdFNlk1Qp85UdLnyMa
2MqABjq4WfeJtjhmRFbFiBiy67Y1eFrC4XoULMEioVtQAcu3uPHszW/sh0oi7n+N
pZARcZ3xSnKy63f33VJxlUKiG5fHLAMmCsgGRG5paSiWRVe5CmajFf0g2Sz565HS
zDSSw9RfI/+oiDumj+x9wN9TiFp2h1bC1U3fLrZj6gD5xGBPj7cMIYD6ny1X4O4c
84iUQhHqmsEU6iQpWp/QjMd6Bln63bC3y208tQIDAQABAoIBAFijFcGFqQAO4Ee0
UbBqdDNW2OzKwfj+7JGkJeLiwmqNRZlfPGGnNXF+Ve36XP4XN6sxICL8ZUimJueN
spgKeTHUnF4sLk+GFbktQNQ+eJwo1xH9fG+nZJ9wg/Mkw9G/w4C/lAJWeMUFjTq0
yniMcjAHgh+szayDXX8TQoIHqp25JJLd6Xn5gJaqM0p6XqUE2NAHG/WHhZKYRd0p
zQATKVZ/RYriea5HN6+l6rBLqi0hqe8fqByodPVYEKh4fCrcsls3wROvgMmMOd5U
kvy9aK6niCSxA02y8C9WVeUEKpoe6n3YDkfSQTYQa431dDpQroLKI1mBY2PhgjvI
6gumxeECgYEA74PjSS+EHihOoiQPS/Z/8HE0KgQUVEzAIzI3I3Zd8nuXCTd8IVEO
JPiRbeiF216p3IeD1QG8gK6T9XvUqLGYKqJSuMJ5xBvq0k6n47CJ7FX7Cd7miGl5
wYHRV82vV+HszDS7b2PXnkQBalQleiKe8daRIxXKPGG58v6URE87Z08CgYEA0Fl6
AVFkCJbx5TRtoe2V1v+IoaAiC1U3yFptSeZm1cfOIcX7UFFDr4AoI3ZCeDDOYGQK
fjNWlndHXv/9DSRtfYJwxcn0ZpeNXrf5kHFAtNJoRhOvGDrj0vc7FZzspdi6oUez
S6EkjBWxGNvel7BRZCg8QhXXIAvOx6MWWm4ZWrsCgYEAjMfvu1+zf2pftcwONa8g
yjov2BZnwJkQQl/Mqwpy9AkS4Lb9PjP/ZVm5WWnX6/Y7T0VUBsqretOiYiMz/yfL
8htRFgoxOkTShGT5J8rndsOe99FNnZapm0TrwHlEfBpubiT8mt+LqBn+3vmwwZZB
6JIe4wl2woEKpDpg+bm8h98CgYEAz211kSBWBlM5KueCiqc9+ZnYjokdu8iwy7Bz
hBJ1qTrOV0ODjBgL2gsuavfO/1gf70lKRRCZkR3ZmZQkfFQbCcy2t8PzpbwWjAl/
1jVapWuhUrtAJFBlB2EKmt7rn8XhMLZwo8gf2bOy6DvmJYDt11hTfbu+vHHlAU61
73wTlAcCgYA0K5HWOb5sdNStdq9G52W6aNGAuWPF8vC8ph9mhGqb1sQ2NVrvu0Kj
7BB2wzxXUoBQigUtCqKGFU7HMbArxW7LOqGSD0nD72u1FhILOgESYfy2KS/JnAxL
NSSI414QETtZed8OmXzqwssdLGHBlO+qEhjptP9HQpg7/9IjDq5Oug==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE REQUEST-----
MIIC4jCCAcoCAQAwgZwxCzAJBgNVBAYTAkxVMRMwEQYDVQQIDApMdXhlbWJvdXJn
MRMwEQYDVQQHDApMdXhlbWJvdXJnMRIwEAYDVQQKDAlsb2NhbGhvc3QxEjAQBgNV
BAsMCWxvY2FsaG9zdDEcMBoGA1UEAwwTY2xpZW50LmxvY2FsLmNvbnN1bDEdMBsG
CSqGSIb3DQEJARYOcm9vdEBsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDC7t+rkQfz1asc1dCe29JZBlv8LtwW0wh1QC9X1fxnONY0Ioye
X3N2uGI+rffTXXJPYk4bUpwMd/1eZhMnoQhr4Q7v7FCCM90U2WTVCnzlR0ufIxrY
yoAGOrhZ94m2OGZEVsWIGLLrtjV4WsLhehQswSKhW1ABy7e48ezNb+yHSiLuf42l
kBFxnfFKcrLrd/fdUnGVQqIbl8csAyYKyAZEbmlpKJZFV7kKZqMV/SDZLPnrkdLM
NJLD1F8j/6iIO6aP7H3A31OIWnaHVsLVTd8utmPqAPnEYE+PtwwhgPqfLVfg7hzz
iJRCEeqawRTqJClan9CMx3oGWfrdsLfLbTy1AgMBAAGgADANBgkqhkiG9w0BAQsF
AAOCAQEAXQhmFGc3FrOayK4ARBtNhXfaheL6p47MhQdWJnv5zIx2Ly3/hwc3LfIX
AQV93LllXm7FR7NlguHcOa4HU5VxzrzRCPpp84FjavU+MIMhfq15XR1FoKYavICZ
LW1tq8zP8RXLJioD2b2JNi1sR8LwulS56OqLLuSsxPB2Zc9KygsR2QdoIuzH4pDh
7fUcFEaRv52EDHEvOVoUANSFL28MH5yoGQ5wqEDDqkAFJh/YhgTyxTvToDQfAoUF
eu99c19BCFw9M04ZAmYTwKAPXTdsAm7piqULFAraiAhuU6LaRUyQX9R/pOHrtUXb
A55P8Y6PtPI4yiu5XrSvKyT3Zc4i1g==
-----END CERTIFICATE REQUEST-----
-----BEGIN CERTIFICATE-----
MIIECDCCAvCgAwIBAgIBCzANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCTFUx
EzARBgNVBAgMCkx1eGVtYm91cmcxEzARBgNVBAcMCkx1eGVtYm91cmcxEjAQBgNV
BAoMCWxvY2FsaG9zdDESMBAGA1UECwwJbG9jYWxob3N0MQswCQYDVQQDDAJjYTEd
MBsGCSqGSIb3DQEJARYOcm9vdEBsb2NhbGhvc3QwHhcNMTYwNTI0MTUyOTIxWhcN
MjYwNTIyMTUyOTIxWjCBhzEcMBoGA1UEAwwTY2xpZW50LmxvY2FsLmNvbnN1bDET
MBEGA1UECAwKTHV4ZW1ib3VyZzELMAkGA1UEBhMCTFUxHTAbBgkqhkiG9w0BCQEW
DnJvb3RAbG9jYWxob3N0MRIwEAYDVQQKDAlsb2NhbGhvc3QxEjAQBgNVBAsMCWxv
Y2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMLu36uRB/PV
qxzV0J7b0lkGW/wu3BbTCHVAL1fV/Gc41jQijJ5fc3a4Yj6t99Ndck9iThtSnAx3
/V5mEyehCGvhDu/sUIIz3RTZZNUKfOVHS58jGtjKgAY6uFn3ibY4ZkRWxYgYsuu2
NXhawuF6FCzBIqFbUAHLt7jx7M1v7IdKIu5/jaWQEXGd8Upysut3991ScZVCohuX
xywDJgrIBkRuaWkolkVXuQpmoxX9INks+euR0sw0ksPUXyP/qIg7po/sfcDfU4ha
dodWwtVN3y62Y+oA+cRgT4+3DCGA+p8tV+DuHPOIlEIR6prBFOokKVqf0IzHegZZ
+t2wt8ttPLUCAwEAAaN5MHcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUyvEMuCadNsgZ
yF0OK+Z0CzjCuPUwHwYDVR0jBBgwFoAU5aIBiZggs3tox/Axl5EQgXjkj6swCwYD
VR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG
9w0BAQUFAAOCAQEAoo4MAvVoWpdrKM9sTaljDmcR0B/mIIx71+AM7B8H0Bg/cDnr
4ofvBntf+kw0oemrSnyd9fxTuONCyn4ROu496h15Wi1yy256v5UTj+zccHluHwbD
ZrRcN3WRdsGp65YQd/lyqNQ36t/19JCwhFYIHtx4j+JXa5va7d9tGcQyntqhYxxA
BUW1TQFhRxQEFzL6995jv/x43ie5OkDX4GZovNE5TJ8oGPLHg56TcjqpqOPGi3mR
L5bCnH1oKO4y/40nqxz+foW6JbpzQPRtV/D7abt0qWTaC0OxkpPayI8nHf67SMQl
GPPyFS/NxX63z5Ft/75kGnPqat9z9mJTnn518g==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA6O1LMjApWtBkDZmrfZ5cekXNr21PQif5tQbA4GaUF/xo5zfG
7OKva0taqz+x63ei096mszkamphk2vP5ukhT/YOL3y+umB+ZhaUPu8Fb2PZO67GN
2lXnBp+X5UKWYBlKtgLVNYt0pnEXCx+x5Sqr8XyIP12weYh6du5lyk9SQ3ws2HHs
pL3y7+GU+c/jYQjddJzHVcPaM1SbaUV7ODwncwgWlt2YbFBDWvQeEzetPnAgyRh7
JGEYKezeh3DiNOYJnfb+6pvv7DlqXDk5C2c/IVR9+3crRuq8JrGFNePWSiYMiHB3
ml8MP+MdXX49mFkYp2A4XzFD/TSXIPGPbj5eDQIDAQABAoIBAQC/hIz1oT//maUK
wbWNvi4Po2FxwpEOtkvNGtZwLCfMaQ/gPa5kjCbsM7NDZ0XldCL/zeyHJIbJYlBa
74wALQRSSF0zj8Mg9aqHhqafHGdmx28wwHcAdO1WNtbv/IYkUedqLH4eXqH1ULs/
vDnLUgC6uEhWwbQe2abIL1Cmvf3H2bpqxxV8/aLSFETPvSZpVdoaMSm3C5A5XQvd
OFg6ToNGc9fNXSVdFzlMAkDeT86zJeb88Ws3vKnr4GviVG3B512aJcOthOmqu22j
J2nL2Vv4FZow0IqzGlwEd3feOgpXcxGu0F76YOYGJ65iPXYvMCCStbcET/JtJRcZ
kA2D9moBAoGBAPjdkziSZc/tEaLRS2Wf0wFhLZktzeNrOPoGhMcgyjVqfx+eIuuU
2Ps0ZiMhsfUSzuvLBoaMPzaMf1+ma0f99HP3GBEthdL5435vwYrWzVWnbKHGcGOi
z8zLVSpzKhKT5UmpsZtZ1z+94ulndnrOIkEw5DQKkUMxbmQj+asIJ7JBAoGBAO+a
vsbnQksqdQChC3W7reLDyU/2Kqm6sfoZscUKC15prtYvgEZ2IR66P6oVKM79FCzM
UXGoVUH8i8c17Rj2re+a8JyjCjO2yMZBv5L6QZsGTXCZp2CPfcif6rR8MjZ7w6iW
4pi9dRHE38Ct4sdlIqbqXSXQWXg8E0FojH28DKDNAoGATR604aIUZOPNRExhdgOa
KuJHdCGKnP/8LxbYDLEvmHABJvYlUiXVO7tYL2jgsdZ7QvyucAGEEU5mpmh29F9R
YqJe1evqfZ+sjODq9DBufy2b72IEMAwjIw6bvMTlc85bDoHEpSSpHHqml7fVMmcw
nE0fWrUvoMfvsp6nXwXu70ECgYEAyIsnpIlJNmqJ1YX1dowoZUVjyLaMTNWDQ4ag
AQCANXyVJpZJcjBLVlGjGbNuHZk7eqdkf5HaEknToGAlW6CUQpjXTPM1hcU2VKIR
O26U3LEwvc8Nhcd0Cyi2JGxTBsEeKYxoilkAlGfIs5eW2TdwAm7kmdLCH92AbF2a
QV7U3v0CgYEAnqW3sHlsn0Yx+Y3+qlfJtt/GwEbKpiqFUndBvmy5QkwTxKkh6kq+
Elf74IQwRdIFWWPwz5XpUbUNuM5Ckra5VJ9VH6XnqwZ/4+lNqfLlwMRmpyy0Owrp
gN1oyZ6eeULmSRb0UQ9SD/W7KsmqmMw93dBMUTCtvttxfZvCCwaobcc=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE REQUEST-----
MIIC4jCCAcoCAQAwgZwxCzAJBgNVBAYTAkxVMRMwEQYDVQQIDApMdXhlbWJvdXJn
MRMwEQYDVQQHDApMdXhlbWJvdXJnMRIwEAYDVQQKDAlsb2NhbGhvc3QxEjAQBgNV
BAsMCWxvY2FsaG9zdDEcMBoGA1UEAwwTc2VydmVyLmxvY2FsLmNvbnN1bDEdMBsG
CSqGSIb3DQEJARYOcm9vdEBsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDo7UsyMCla0GQNmat9nlx6Rc2vbU9CJ/m1BsDgZpQX/GjnN8bs
4q9rS1qrP7Hrd6LT3qazORqamGTa8/m6SFP9g4vfL66YH5mFpQ+7wVvY9k7rsY3a
VecGn5flQpZgGUq2AtU1i3SmcRcLH7HlKqvxfIg/XbB5iHp27mXKT1JDfCzYceyk
vfLv4ZT5z+NhCN10nMdVw9ozVJtpRXs4PCdzCBaW3ZhsUENa9B4TN60+cCDJGHsk
YRgp7N6HcOI05gmd9v7qm+/sOWpcOTkLZz8hVH37dytG6rwmsYU149ZKJgyIcHea
Xww/4x1dfj2YWRinYDhfMUP9NJcg8Y9uPl4NAgMBAAGgADANBgkqhkiG9w0BAQsF
AAOCAQEAJ7BE/2ol7E8ykovP+PEBEVwRvbPFV1lKf77Vdkz0A7uU8ctxzb9asCwC
hyyHQ350k0i0/MFqKBCZeQqeNMVHnKzUnzVmwiKklK186XBbg1H29qEMSkKUGDcw
9XSax7iULNqb8cb6l16t2VOm8F8Eufs3b2fAkPmSRxss4LMkcVbS2A3D8ITeY+m/
adrav51u1O4EO6bZJUF6g3ZGuCB9iery8wbEXIOPZp+/utgqstCBgHFSuRm4CzJD
1y/F63ddgmxMVHQCGnwZX1Nt2WeTxZlfCmcMD2b2UjaFZq6ziu5P4BOGwrZP8sHA
mMfqoPYPcO+Bzxvw+7nnJ/rzyzU66g==
-----END CERTIFICATE REQUEST-----
-----BEGIN CERTIFICATE-----
MIIECDCCAvCgAwIBAgIBCjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCTFUx
EzARBgNVBAgMCkx1eGVtYm91cmcxEzARBgNVBAcMCkx1eGVtYm91cmcxEjAQBgNV
BAoMCWxvY2FsaG9zdDESMBAGA1UECwwJbG9jYWxob3N0MQswCQYDVQQDDAJjYTEd
MBsGCSqGSIb3DQEJARYOcm9vdEBsb2NhbGhvc3QwHhcNMTYwNTI0MTUyODQ1WhcN
MjYwNTIyMTUyODQ1WjCBhzEcMBoGA1UEAwwTc2VydmVyLmxvY2FsLmNvbnN1bDET
MBEGA1UECAwKTHV4ZW1ib3VyZzELMAkGA1UEBhMCTFUxHTAbBgkqhkiG9w0BCQEW
DnJvb3RAbG9jYWxob3N0MRIwEAYDVQQKDAlsb2NhbGhvc3QxEjAQBgNVBAsMCWxv
Y2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOjtSzIwKVrQ
ZA2Zq32eXHpFza9tT0In+bUGwOBmlBf8aOc3xuzir2tLWqs/set3otPeprM5GpqY
ZNrz+bpIU/2Di98vrpgfmYWlD7vBW9j2TuuxjdpV5wafl+VClmAZSrYC1TWLdKZx
FwsfseUqq/F8iD9dsHmIenbuZcpPUkN8LNhx7KS98u/hlPnP42EI3XScx1XD2jNU
m2lFezg8J3MIFpbdmGxQQ1r0HhM3rT5wIMkYeyRhGCns3odw4jTmCZ32/uqb7+w5
alw5OQtnPyFUfft3K0bqvCaxhTXj1komDIhwd5pfDD/jHV1+PZhZGKdgOF8xQ/00
lyDxj24+Xg0CAwEAAaN5MHcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUq/HZXu4qH9x3
RZZ+QnWoVU0xGjgwHwYDVR0jBBgwFoAU5aIBiZggs3tox/Axl5EQgXjkj6swCwYD
VR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG
9w0BAQUFAAOCAQEANszbbzGydlzq7RQ6eaFjJ54AuKI3v0E9Ai3YjeTPoPQpuICo
xMEOLJSce2uT+Xc9HvzCerN/4xXFhMgqX3gwWdQwPpvV9mpb9zselrZe5ReUNLUB
zDhoZovuNaw2bNuq9t4guKM7qFkeQ5rJu12jHYToCw3fa9M4Y20yZ/iusfa3eS3p
iRaBc8S27eEE3zX9IVSXIGNxK+7KQfFTrs6MTerz+V71K6XFDAe60rtJ2fbUjzVo
HKtSu6KOfvvve5vY9bjYI/1bUXNlDHC9V4+soxaxK/z3+npsOvlVyWn2zDZkPDcq
hiZnkNgRVtr4uMxyJW+CqJxcmjhOur3DmLWXtA==
-----END CERTIFICATE-----
version: '3.2'
services:
#================================================================================================
# CORE-CONSUL
#================================================================================================
core-consul:
image: bhuisgen/alpine-consul
ports:
- "8300:8300" # server RPC
- "8301:8301" # serf LAN
- "8301:8301/udp" # serf LAN (UDP)
- "8302:8302" # serf WAN
- "8302:8302/udp" # serf WAN (UDP)
- "8500:8500" # HTTP
- "8501:8501" # HTTPS
- "8600:8600" # DNS
- "8600:8600/udp" # DNS (UDP)
volumes:
- /etc/localtime:/etc/localtime:ro
#- /host/data:/var/consul # volume for data
environment:
- CONSUL_OPTIONS=-server -bootstrap-expect 1 -client 0.0.0.0 -ui # minimal server options
- CONSUL_DATACENTER=local # datacenter
- CONSUL_DOMAIN=consul # domain name
- CONSUL_ENCRYPT=h2N6R1eyTysjBzzXxAWJvA== # encryption key
- CONSUL_TLS=1 # enable TLS
- CONSUL_TLSCAFILE=/etc/consul.d/ssl/ca.pem # TLS CA certificate file
- CONSUL_TLSCERTFILE=/etc/consul.d/ssl/server.pem # TLS server certificate file
- CONSUL_TLSKEYFILE=/etc/consul.d/ssl/server-priv-key.pem # TLS server certificate key file
#- CONSUL_ACLDATACENTER= # ACL authoritative datacenter
#- CONSUL_ACLMASTERTOKEN= # ACL master token (server only)
#- CONSUL_ACLTOKEN= # ACL token
#- CONSUL_ACLAGENTMASTERTOKEN= # ACL token during server outage (client only)
#- CONSUL_ACLAGENTTOKEN= # ACL token for internal operations (client only, ACL token by default)
#- CONSUL_ACLREPLICATIONTOKEN= # ACL token for replication outside of datacenter (server only)
#- CONSUL_ACLDEFAULTPOLICY=extend-cache # ACL default policy (server only)
#- CONSUL_ACLDOWNPOLICY=extend-cache # ACL down policy
#- CONSUL_ACLTTL=30 # ACL TTL (server only)
#- CONSUL_ACLENFORCEVERSION8=true # Enforce ACL version 8
#- CONSUL_RAFTMULTIPLIER=0 # Raft mutliplier
template {
source = "/etc/consul-template/templates/consul/acl.json.ctmpl"
destination = "/etc/consul.d/acl.json"
command = "/bin/chown root:consul /etc/consul.d/acl.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/consul/config.json.ctmpl"
destination = "/etc/consul.d/config.json"
command = "/bin/chown root:consul /etc/consul.d/config.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/consul/domain.json.ctmpl"
destination = "/etc/consul.d/domain.json"
command = "/bin/chown root:consul /etc/consul.d/domain.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/consul/encrypt.json.ctmpl"
destination = "/etc/consul.d/encrypt.json"
command = "/bin/chown root:consul /etc/consul.d/encrypt.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/consul/performance.json.ctmpl"
destination = "/etc/consul.d/performance.json"
command = "/bin/chown root:consul /etc/consul.d/performance.json"
perms = 0640
}
template {
source = "/etc/consul-template/templates/consul/tls.json.ctmpl"
destination = "/etc/consul.d/tls.json"
command = "/bin/chown root:consul /etc/consul.d/tls.json"
perms = 0640
}
{{- $acl_datacenter := env "CONSUL_ACLDATACENTER" -}}
{{- $acl_master_token := env "CONSUL_ACLMASTERTOKEN" -}}
{{- $acl_token := env "CONSUL_ACLTOKEN" -}}
{{- $acl_agent_master_token := env "CONSUL_ACLAGENTMASTERTOKEN" -}}
{{- $acl_agent_token := env "CONSUL_ACLAGENTTOKEN" -}}
{{- $acl_replication_token := env "CONSUL_ACLREPLICATIONTOKEN" -}}
{{- $acl_default_policy := env "CONSUL_ACLDEFAULTPOLICY" -}}
{{- $acl_down_policy := env "CONSUL_ACLDOWNPOLICY" -}}
{{- $acl_ttl := env "CONSUL_ACLTTL" -}}
{{- $acl_enforce_version_8 := env "CONSUL_ACLENFORCEVERSION8" -}}
{
{{if $acl_datacenter}}"acl_datacenter": "{{$acl_datacenter}}",{{end}}
{{if $acl_master_token}}"acl_master_token": "{{$acl_master_token}}",{{end}}
{{if $acl_token}}"acl_token": "{{$acl_token}}",{{end}}
{{if $acl_agent_master_token}}"acl_agent_master_token": "{{$acl_agent_master_token}}",{{end}}
{{if $acl_agent_token}}"acl_agent_token": "{{$acl_agent_token}}",{{end}}
{{if $acl_replication_token}}"acl_replication_token": "{{$acl_replication_token}}",{{end}}
{{if $acl_default_policy}}"acl_default_policy": "{{$acl_default_policy}}",{{end}}
{{if $acl_down_policy}}"acl_down_policy": "{{$acl_down_policy}}",{{end}}
{{if $acl_ttl}}"acl_ttl": "{{$acl_ttl}}",{{end}}
"acl_enforce_version_8": {{if $acl_enforce_version_8}}{{$acl_enforce_version_8}}{{else}}true{{end}}
}
{{- $datacenter := env "CONSUL_DATACENTER" -}}
{
{{if $datacenter}}"datacenter": "{{$datacenter}}",{{end}}
"data_dir": "/var/lib/consul",
"log_level": "INFO",
"disable_anonymous_signature": true,
"disable_update_check": true
}
{{- $domain := env "CONSUL_DOMAIN" -}}
{
"domain": {{if $domain}}"{{$domain}}"{{else}}"consul"{{end}}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment